From ec5c4929c1c5677d22c923193ce04f3d69b72711 Mon Sep 17 00:00:00 2001 From: Paul Frazee Date: Fri, 12 Apr 2024 14:13:13 -0700 Subject: PWI improvements (#3489) * Enable home and feeds on the PWI * Add global SigninDialog to drive useRequireAuth() * Tweak desktop styles * Make the logo in leftnav PWI a clickable home link * Add label * Improve dialog on web * Fix query key * Go to home after signout from settings screen * Filter out feeds from the discover listing for logged out users which are known to break without auth * Update profile header follow/subscribe to give signin prompt * Show profile feeds tabs on pwi * Add language selector to account creation footer and pwi left nav desktop --------- Co-authored-by: dan --- .../Profile/Header/ProfileHeaderLabeler.tsx | 51 ++++++++++++---------- 1 file changed, 28 insertions(+), 23 deletions(-) (limited to 'src/screens/Profile/Header/ProfileHeaderLabeler.tsx') diff --git a/src/screens/Profile/Header/ProfileHeaderLabeler.tsx b/src/screens/Profile/Header/ProfileHeaderLabeler.tsx index d0fd5e20b..b9145822c 100644 --- a/src/screens/Profile/Header/ProfileHeaderLabeler.tsx +++ b/src/screens/Profile/Header/ProfileHeaderLabeler.tsx @@ -18,7 +18,7 @@ import {useModalControls} from '#/state/modals' import {useLabelerSubscriptionMutation} from '#/state/queries/labeler' import {useLikeMutation, useUnlikeMutation} from '#/state/queries/like' import {usePreferencesQuery} from '#/state/queries/preferences' -import {useSession} from '#/state/session' +import {useRequireAuth, useSession} from '#/state/session' import {useAnalytics} from 'lib/analytics/analytics' import {useHaptics} from 'lib/haptics' import {useProfileShadow} from 'state/cache/profile-shadow' @@ -64,6 +64,7 @@ let ProfileHeaderLabeler = ({ const {currentAccount, hasSession} = useSession() const {openModal} = useModalControls() const {track} = useAnalytics() + const requireAuth = useRequireAuth() const playHaptic = useHaptics() const cantSubscribePrompt = Prompt.usePromptControl() const isSelf = currentAccount?.did === profile.did @@ -125,27 +126,32 @@ let ProfileHeaderLabeler = ({ }) }, [track, openModal, profile]) - const onPressSubscribe = React.useCallback(async () => { - if (!canSubscribe) { - cantSubscribePrompt.open() - return - } - try { - await toggleSubscription({ - did: profile.did, - subscribe: !isSubscribed, - }) - } catch (e: any) { - // setSubscriptionError(e.message) - logger.error(`Failed to subscribe to labeler`, {message: e.message}) - } - }, [ - toggleSubscription, - isSubscribed, - profile, - canSubscribe, - cantSubscribePrompt, - ]) + const onPressSubscribe = React.useCallback( + () => + requireAuth(async () => { + if (!canSubscribe) { + cantSubscribePrompt.open() + return + } + try { + await toggleSubscription({ + did: profile.did, + subscribe: !isSubscribed, + }) + } catch (e: any) { + // setSubscriptionError(e.message) + logger.error(`Failed to subscribe to labeler`, {message: e.message}) + } + }), + [ + requireAuth, + toggleSubscription, + isSubscribed, + profile, + canSubscribe, + cantSubscribePrompt, + ], + ) const isMe = React.useMemo( () => currentAccount?.did === profile.did, @@ -184,7 +190,6 @@ let ProfileHeaderLabeler = ({ ? _(msg`Unsubscribe from this labeler`) : _(msg`Subscribe to this labeler`) } - disabled={!hasSession} onPress={onPressSubscribe}> {state => (