diff options
Diffstat (limited to 'src/state')
-rw-r--r-- | src/state/queries/feed.ts | 27 | ||||
-rw-r--r-- | src/state/session/index.tsx | 8 |
2 files changed, 28 insertions, 7 deletions
diff --git a/src/state/queries/feed.ts b/src/state/queries/feed.ts index c56912491..0d3de8969 100644 --- a/src/state/queries/feed.ts +++ b/src/state/queries/feed.ts @@ -17,7 +17,7 @@ import {sanitizeDisplayName} from '#/lib/strings/display-names' import {sanitizeHandle} from '#/lib/strings/handles' import {STALE} from '#/state/queries' import {usePreferencesQuery} from '#/state/queries/preferences' -import {getAgent} from '#/state/session' +import {getAgent, useSession} from '#/state/session' import {router} from '#/routes' export type FeedSourceFeedInfo = { @@ -216,17 +216,38 @@ const FOLLOWING_FEED_STUB: FeedSourceInfo = { likeCount: 0, likeUri: '', } +const DISCOVER_FEED_STUB: FeedSourceInfo = { + type: 'feed', + displayName: 'Discover', + uri: '', + route: { + href: '/', + name: 'Home', + params: {}, + }, + cid: '', + avatar: '', + description: new RichText({text: ''}), + creatorDid: '', + creatorHandle: '', + likeCount: 0, + likeUri: '', +} const pinnedFeedInfosQueryKeyRoot = 'pinnedFeedsInfos' export function usePinnedFeedsInfos() { + const {hasSession} = useSession() const {data: preferences, isLoading: isLoadingPrefs} = usePreferencesQuery() const pinnedUris = preferences?.feeds?.pinned ?? [] return useQuery({ staleTime: STALE.INFINITY, enabled: !isLoadingPrefs, - queryKey: [pinnedFeedInfosQueryKeyRoot, pinnedUris.join(',')], + queryKey: [ + pinnedFeedInfosQueryKeyRoot, + (hasSession ? 'authed:' : 'unauthed:') + pinnedUris.join(','), + ], queryFn: async () => { let resolved = new Map() @@ -264,7 +285,7 @@ export function usePinnedFeedsInfos() { ) // The returned result will have the original order. - const result = [FOLLOWING_FEED_STUB] + const result = [hasSession ? FOLLOWING_FEED_STUB : DISCOVER_FEED_STUB] await Promise.allSettled([feedsPromise, ...listsPromises]) for (let pinnedUri of pinnedUris) { if (resolved.has(pinnedUri)) { diff --git a/src/state/session/index.tsx b/src/state/session/index.tsx index 5c7cc1591..b88181ebd 100644 --- a/src/state/session/index.tsx +++ b/src/state/session/index.tsx @@ -15,8 +15,8 @@ import {logger} from '#/logger' import {isWeb} from '#/platform/detection' import * as persisted from '#/state/persisted' import {PUBLIC_BSKY_AGENT} from '#/state/queries' -import {useLoggedOutViewControls} from '#/state/shell/logged-out' import {useCloseAllActiveElements} from '#/state/util' +import {useGlobalDialogsControlContext} from '#/components/dialogs/Context' import {IS_DEV} from '#/env' import {emitSessionDropped} from '../events' import {readLabelers} from './agent-config' @@ -702,8 +702,8 @@ export function useSessionApi() { export function useRequireAuth() { const {hasSession} = useSession() - const {setShowLoggedOut} = useLoggedOutViewControls() const closeAll = useCloseAllActiveElements() + const {signinDialogControl} = useGlobalDialogsControlContext() return React.useCallback( (fn: () => void) => { @@ -711,10 +711,10 @@ export function useRequireAuth() { fn() } else { closeAll() - setShowLoggedOut(true) + signinDialogControl.open() } }, - [hasSession, setShowLoggedOut, closeAll], + [hasSession, signinDialogControl, closeAll], ) } |