Skip to content

Commit

Permalink
add verificaton check to list creation
Browse files Browse the repository at this point in the history
  • Loading branch information
haileyok committed Nov 11, 2024
1 parent 8a864dc commit 803e60a
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 5 deletions.
2 changes: 1 addition & 1 deletion src/view/com/composer/Composer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -588,7 +588,7 @@ export const ComposePost = ({
onClose()
}}
reasonText={_(
msg`Before you may create a post, you must first verify your email.`,
msg`Before creating a post, you must first verify your email.`,
)}
/>
<KeyboardAvoidingView
Expand Down
22 changes: 20 additions & 2 deletions src/view/screens/Lists.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ import React from 'react'
import {StyleSheet, View} from 'react-native'
import {AtUri} from '@atproto/api'
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
import {Trans} from '@lingui/macro'
import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react'
import {useFocusEffect, useNavigation} from '@react-navigation/native'

import {useEmail} from '#/lib/hooks/useEmail'
import {usePalette} from '#/lib/hooks/usePalette'
import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
Expand All @@ -16,15 +18,20 @@ import {MyLists} from '#/view/com/lists/MyLists'
import {Button} from '#/view/com/util/forms/Button'
import {SimpleViewHeader} from '#/view/com/util/SimpleViewHeader'
import {Text} from '#/view/com/util/text/Text'
import {useDialogControl} from '#/components/Dialog'
import {VerifyEmailDialog} from '#/components/dialogs/VerifyEmailDialog'
import * as Layout from '#/components/Layout'

type Props = NativeStackScreenProps<CommonNavigatorParams, 'Lists'>
export function ListsScreen({}: Props) {
const {_} = useLingui()
const pal = usePalette('default')
const setMinimalShellMode = useSetMinimalShellMode()
const {isMobile} = useWebMediaQueries()
const navigation = useNavigation<NavigationProp>()
const {openModal} = useModalControls()
const {needsEmailVerification} = useEmail()
const control = useDialogControl()

useFocusEffect(
React.useCallback(() => {
Expand All @@ -33,6 +40,11 @@ export function ListsScreen({}: Props) {
)

const onPressNewList = React.useCallback(() => {
if (needsEmailVerification) {
control.open()
return
}

openModal({
name: 'create-or-edit-list',
purpose: 'app.bsky.graph.defs#curatelist',
Expand All @@ -46,7 +58,7 @@ export function ListsScreen({}: Props) {
} catch {}
},
})
}, [openModal, navigation])
}, [needsEmailVerification, control, openModal, navigation])

return (
<Layout.Screen testID="listsScreen">
Expand Down Expand Up @@ -87,6 +99,12 @@ export function ListsScreen({}: Props) {
</View>
</SimpleViewHeader>
<MyLists filter="curate" style={s.flexGrow1} />
<VerifyEmailDialog
reasonText={_(
msg`Before creating a list, you must first verify your email.`,
)}
control={control}
/>
</Layout.Screen>
)
}
22 changes: 20 additions & 2 deletions src/view/screens/ModerationModlists.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ import React from 'react'
import {View} from 'react-native'
import {AtUri} from '@atproto/api'
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
import {Trans} from '@lingui/macro'
import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react'
import {useFocusEffect, useNavigation} from '@react-navigation/native'

import {useEmail} from '#/lib/hooks/useEmail'
import {usePalette} from '#/lib/hooks/usePalette'
import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
Expand All @@ -16,15 +18,20 @@ import {MyLists} from '#/view/com/lists/MyLists'
import {Button} from '#/view/com/util/forms/Button'
import {SimpleViewHeader} from '#/view/com/util/SimpleViewHeader'
import {Text} from '#/view/com/util/text/Text'
import {useDialogControl} from '#/components/Dialog'
import {VerifyEmailDialog} from '#/components/dialogs/VerifyEmailDialog'
import * as Layout from '#/components/Layout'

type Props = NativeStackScreenProps<CommonNavigatorParams, 'ModerationModlists'>
export function ModerationModlistsScreen({}: Props) {
const {_} = useLingui()
const pal = usePalette('default')
const setMinimalShellMode = useSetMinimalShellMode()
const {isMobile} = useWebMediaQueries()
const navigation = useNavigation<NavigationProp>()
const {openModal} = useModalControls()
const {needsEmailVerification} = useEmail()
const control = useDialogControl()

useFocusEffect(
React.useCallback(() => {
Expand All @@ -33,6 +40,11 @@ export function ModerationModlistsScreen({}: Props) {
)

const onPressNewList = React.useCallback(() => {
if (needsEmailVerification) {
control.open()
return
}

openModal({
name: 'create-or-edit-list',
purpose: 'app.bsky.graph.defs#modlist',
Expand All @@ -46,7 +58,7 @@ export function ModerationModlistsScreen({}: Props) {
} catch {}
},
})
}, [openModal, navigation])
}, [needsEmailVerification, control, openModal, navigation])

return (
<Layout.Screen testID="moderationModlistsScreen">
Expand Down Expand Up @@ -83,6 +95,12 @@ export function ModerationModlistsScreen({}: Props) {
</View>
</SimpleViewHeader>
<MyLists filter="mod" style={s.flexGrow1} />
<VerifyEmailDialog
reasonText={_(
msg`Before creating a list, you must first verify your email.`,
)}
control={control}
/>
</Layout.Screen>
)
}

0 comments on commit 803e60a

Please sign in to comment.