diff options
Diffstat (limited to 'src/state/queries')
-rw-r--r-- | src/state/queries/preferences/const.ts | 4 | ||||
-rw-r--r-- | src/state/queries/preferences/index.ts | 47 | ||||
-rw-r--r-- | src/state/queries/profile.ts | 7 |
3 files changed, 58 insertions, 0 deletions
diff --git a/src/state/queries/preferences/const.ts b/src/state/queries/preferences/const.ts index d94edb47e..2a8c51165 100644 --- a/src/state/queries/preferences/const.ts +++ b/src/state/queries/preferences/const.ts @@ -34,4 +34,8 @@ export const DEFAULT_LOGGED_OUT_PREFERENCES: UsePreferencesQueryResponse = { userAge: 13, // TODO(pwi) interests: {tags: []}, savedFeeds: [], + bskyAppState: { + queuedNudges: [], + activeProgressGuide: undefined, + }, } diff --git a/src/state/queries/preferences/index.ts b/src/state/queries/preferences/index.ts index 672abfcac..9bb57fcaf 100644 --- a/src/state/queries/preferences/index.ts +++ b/src/state/queries/preferences/index.ts @@ -342,3 +342,50 @@ export function useRemoveMutedWordMutation() { }, }) } + +export function useQueueNudgesMutation() { + const queryClient = useQueryClient() + const agent = useAgent() + + return useMutation({ + mutationFn: async (nudges: string | string[]) => { + await agent.bskyAppQueueNudges(nudges) + // triggers a refetch + await queryClient.invalidateQueries({ + queryKey: preferencesQueryKey, + }) + }, + }) +} + +export function useDismissNudgesMutation() { + const queryClient = useQueryClient() + const agent = useAgent() + + return useMutation({ + mutationFn: async (nudges: string | string[]) => { + await agent.bskyAppDismissNudges(nudges) + // triggers a refetch + await queryClient.invalidateQueries({ + queryKey: preferencesQueryKey, + }) + }, + }) +} + +export function useSetActiveProgressGuideMutation() { + const queryClient = useQueryClient() + const agent = useAgent() + + return useMutation({ + mutationFn: async ( + guide: AppBskyActorDefs.BskyAppProgressGuide | undefined, + ) => { + await agent.bskyAppSetActiveProgressGuide(guide) + // triggers a refetch + await queryClient.invalidateQueries({ + queryKey: preferencesQueryKey, + }) + }, + }) +} diff --git a/src/state/queries/profile.ts b/src/state/queries/profile.ts index 6f7f2de79..af00faf27 100644 --- a/src/state/queries/profile.ts +++ b/src/state/queries/profile.ts @@ -25,6 +25,10 @@ import {STALE} from '#/state/queries' import {resetProfilePostsQueries} from '#/state/queries/post-feed' import {updateProfileShadow} from '../cache/profile-shadow' import {useAgent, useSession} from '../session' +import { + ProgressGuideAction, + useProgressGuideControls, +} from '../shell/progress-guide' import {RQKEY as RQKEY_LIST_CONVOS} from './messages/list-converations' import {RQKEY as RQKEY_MY_BLOCKED} from './my-blocked-accounts' import {RQKEY as RQKEY_MY_MUTED} from './my-muted-accounts' @@ -274,12 +278,15 @@ function useProfileFollowMutation( const {currentAccount} = useSession() const agent = useAgent() const queryClient = useQueryClient() + const {captureAction} = useProgressGuideControls() + return useMutation<{uri: string; cid: string}, Error, {did: string}>({ mutationFn: async ({did}) => { let ownProfile: AppBskyActorDefs.ProfileViewDetailed | undefined if (currentAccount) { ownProfile = findProfileQueryData(queryClient, currentAccount.did) } + captureAction(ProgressGuideAction.Follow) logEvent('profile:follow', { logContext, didBecomeMutual: profile.viewer |