Integrate new SDK methods
This commit is contained in:
@@ -17,7 +17,7 @@ import {makeSearchLink} from '#/lib/routes/links'
|
|||||||
import {NavigationProp} from '#/lib/routes/types'
|
import {NavigationProp} from '#/lib/routes/types'
|
||||||
import {
|
import {
|
||||||
usePreferencesQuery,
|
usePreferencesQuery,
|
||||||
useUpsertMutedWordsMutation,
|
useAddMutedWordMutation,
|
||||||
useRemoveMutedWordMutation,
|
useRemoveMutedWordMutation,
|
||||||
} from '#/state/queries/preferences'
|
} from '#/state/queries/preferences'
|
||||||
import {Loader} from '#/components/Loader'
|
import {Loader} from '#/components/Loader'
|
||||||
@@ -47,10 +47,10 @@ export function TagMenu({
|
|||||||
const {isLoading: isPreferencesLoading, data: preferences} =
|
const {isLoading: isPreferencesLoading, data: preferences} =
|
||||||
usePreferencesQuery()
|
usePreferencesQuery()
|
||||||
const {
|
const {
|
||||||
mutateAsync: upsertMutedWord,
|
mutateAsync: addMutedWord,
|
||||||
variables: optimisticUpsert,
|
variables: optimisticAdd,
|
||||||
reset: resetUpsert,
|
reset: resetAdd,
|
||||||
} = useUpsertMutedWordsMutation()
|
} = useAddMutedWordMutation()
|
||||||
const {
|
const {
|
||||||
mutateAsync: removeMutedWord,
|
mutateAsync: removeMutedWord,
|
||||||
variables: optimisticRemove,
|
variables: optimisticRemove,
|
||||||
@@ -62,9 +62,8 @@ export function TagMenu({
|
|||||||
(preferences?.mutedWords?.find(
|
(preferences?.mutedWords?.find(
|
||||||
m => m.value === tag && m.targets.includes('tag'),
|
m => m.value === tag && m.targets.includes('tag'),
|
||||||
) ??
|
) ??
|
||||||
optimisticUpsert?.find(
|
(optimisticAdd?.value === tag &&
|
||||||
m => m.value === tag && m.targets.includes('tag'),
|
optimisticAdd.targets.includes('tag'))) &&
|
||||||
)) &&
|
|
||||||
!(optimisticRemove?.value === tag),
|
!(optimisticRemove?.value === tag),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -211,14 +210,14 @@ export function TagMenu({
|
|||||||
onPress={() => {
|
onPress={() => {
|
||||||
control.close(() => {
|
control.close(() => {
|
||||||
if (isMuted) {
|
if (isMuted) {
|
||||||
resetUpsert()
|
resetAdd()
|
||||||
removeMutedWord({
|
removeMutedWord({
|
||||||
value: tag,
|
value: tag,
|
||||||
targets: ['tag'],
|
targets: ['tag'],
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
resetRemove()
|
resetRemove()
|
||||||
upsertMutedWord([{value: tag, targets: ['tag']}])
|
addMutedWord({value: tag, targets: ['tag']})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}}>
|
}}>
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import {NativeDropdown} from '#/view/com/util/forms/NativeDropdown'
|
|||||||
import {NavigationProp} from '#/lib/routes/types'
|
import {NavigationProp} from '#/lib/routes/types'
|
||||||
import {
|
import {
|
||||||
usePreferencesQuery,
|
usePreferencesQuery,
|
||||||
useUpsertMutedWordsMutation,
|
useAddMutedWordMutation,
|
||||||
useRemoveMutedWordMutation,
|
useRemoveMutedWordMutation,
|
||||||
} from '#/state/queries/preferences'
|
} from '#/state/queries/preferences'
|
||||||
import {enforceLen} from '#/lib/strings/helpers'
|
import {enforceLen} from '#/lib/strings/helpers'
|
||||||
@@ -45,17 +45,16 @@ export function TagMenu({
|
|||||||
const {_} = useLingui()
|
const {_} = useLingui()
|
||||||
const navigation = useNavigation<NavigationProp>()
|
const navigation = useNavigation<NavigationProp>()
|
||||||
const {data: preferences} = usePreferencesQuery()
|
const {data: preferences} = usePreferencesQuery()
|
||||||
const {mutateAsync: upsertMutedWord, variables: optimisticUpsert} =
|
const {mutateAsync: addMutedWord, variables: optimisticAdd} =
|
||||||
useUpsertMutedWordsMutation()
|
useAddMutedWordMutation()
|
||||||
const {mutateAsync: removeMutedWord, variables: optimisticRemove} =
|
const {mutateAsync: removeMutedWord, variables: optimisticRemove} =
|
||||||
useRemoveMutedWordMutation()
|
useRemoveMutedWordMutation()
|
||||||
const isMuted = Boolean(
|
const isMuted = Boolean(
|
||||||
(preferences?.mutedWords?.find(
|
(preferences?.mutedWords?.find(
|
||||||
m => m.value === tag && m.targets.includes('tag'),
|
m => m.value === tag && m.targets.includes('tag'),
|
||||||
) ??
|
) ??
|
||||||
optimisticUpsert?.find(
|
(optimisticAdd?.value === tag &&
|
||||||
m => m.value === tag && m.targets.includes('tag'),
|
optimisticAdd.targets.includes('tag'))) &&
|
||||||
)) &&
|
|
||||||
!(optimisticRemove?.value === tag),
|
!(optimisticRemove?.value === tag),
|
||||||
)
|
)
|
||||||
const truncatedTag = '#' + enforceLen(tag, 15, true, 'middle')
|
const truncatedTag = '#' + enforceLen(tag, 15, true, 'middle')
|
||||||
@@ -107,7 +106,7 @@ export function TagMenu({
|
|||||||
if (isMuted) {
|
if (isMuted) {
|
||||||
removeMutedWord({value: tag, targets: ['tag']})
|
removeMutedWord({value: tag, targets: ['tag']})
|
||||||
} else {
|
} else {
|
||||||
upsertMutedWord([{value: tag, targets: ['tag']}])
|
addMutedWord({value: tag, targets: ['tag']})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
testID: 'tagMenuMute',
|
testID: 'tagMenuMute',
|
||||||
@@ -128,7 +127,7 @@ export function TagMenu({
|
|||||||
preferences,
|
preferences,
|
||||||
tag,
|
tag,
|
||||||
truncatedTag,
|
truncatedTag,
|
||||||
upsertMutedWord,
|
addMutedWord,
|
||||||
removeMutedWord,
|
removeMutedWord,
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import {AppBskyActorDefs, sanitizeMutedWordValue} from '@atproto/api'
|
|||||||
|
|
||||||
import {
|
import {
|
||||||
usePreferencesQuery,
|
usePreferencesQuery,
|
||||||
useUpsertMutedWordsMutation,
|
useAddMutedWordMutation,
|
||||||
useRemoveMutedWordMutation,
|
useRemoveMutedWordMutation,
|
||||||
} from '#/state/queries/preferences'
|
} from '#/state/queries/preferences'
|
||||||
import {isNative} from '#/platform/detection'
|
import {isNative} from '#/platform/detection'
|
||||||
@@ -52,7 +52,7 @@ function MutedWordsInner({}: {control: Dialog.DialogOuterProps['control']}) {
|
|||||||
data: preferences,
|
data: preferences,
|
||||||
error: preferencesError,
|
error: preferencesError,
|
||||||
} = usePreferencesQuery()
|
} = usePreferencesQuery()
|
||||||
const {isPending, mutateAsync: addMutedWord} = useUpsertMutedWordsMutation()
|
const {isPending, mutateAsync: addMutedWord} = useAddMutedWordMutation()
|
||||||
const [field, setField] = React.useState('')
|
const [field, setField] = React.useState('')
|
||||||
const [options, setOptions] = React.useState(['content'])
|
const [options, setOptions] = React.useState(['content'])
|
||||||
const [error, setError] = React.useState('')
|
const [error, setError] = React.useState('')
|
||||||
@@ -71,7 +71,7 @@ function MutedWordsInner({}: {control: Dialog.DialogOuterProps['control']}) {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
// send raw value and rely on SDK as sanitization source of truth
|
// send raw value and rely on SDK as sanitization source of truth
|
||||||
await addMutedWord([{value: field, targets}])
|
await addMutedWord({value: field, targets})
|
||||||
setField('')
|
setField('')
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
logger.error(`Failed to save muted word`, {message: e.message})
|
logger.error(`Failed to save muted word`, {message: e.message})
|
||||||
|
|||||||
@@ -284,12 +284,12 @@ export function useUnpinFeedMutation() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export function useUpsertMutedWordsMutation() {
|
export function useAddMutedWordMutation() {
|
||||||
const queryClient = useQueryClient()
|
const queryClient = useQueryClient()
|
||||||
|
|
||||||
return useMutation({
|
return useMutation({
|
||||||
mutationFn: async (mutedWords: AppBskyActorDefs.MutedWord[]) => {
|
mutationFn: async (mutedWord: AppBskyActorDefs.MutedWord) => {
|
||||||
await getAgent().upsertMutedWords(mutedWords)
|
await getAgent().addMutedWord(mutedWord)
|
||||||
// triggers a refetch
|
// triggers a refetch
|
||||||
await queryClient.invalidateQueries({
|
await queryClient.invalidateQueries({
|
||||||
queryKey: preferencesQueryKey,
|
queryKey: preferencesQueryKey,
|
||||||
|
|||||||
Reference in New Issue
Block a user