diff --git a/src/features/liveEvents/components/LiveEventFeedsSettingsToggle.tsx b/src/features/liveEvents/components/LiveEventFeedsSettingsToggle.tsx
new file mode 100644
index 0000000000..e27ff271b5
--- /dev/null
+++ b/src/features/liveEvents/components/LiveEventFeedsSettingsToggle.tsx
@@ -0,0 +1,41 @@
+import {msg, Trans} from '@lingui/macro'
+import {useLingui} from '@lingui/react'
+
+import * as SettingsList from '#/screens/Settings/components/SettingsList'
+import * as Toggle from '#/components/forms/Toggle'
+import {Live_Stroke2_Corner0_Rounded as LiveIcon} from '#/components/icons/Live'
+import {
+ useLiveEventPreferences,
+ useUpdateLiveEventPreferences,
+} from '#/features/liveEvents/preferences'
+
+export function LiveEventFeedsSettingsToggle() {
+ const {_} = useLingui()
+ const {data: prefs} = useLiveEventPreferences()
+ const {
+ isPending,
+ data: updatedPrefs,
+ mutate: update,
+ } = useUpdateLiveEventPreferences()
+ const hideAllFeeds = !!(updatedPrefs || prefs)?.hideAllFeeds
+
+ return (
+ {
+ if (!isPending) {
+ update({type: 'toggleHideAllFeeds'})
+ }
+ }}>
+
+
+
+ Enable live event banner
+
+
+
+
+ )
+}
diff --git a/src/features/liveEvents/preferences.ts b/src/features/liveEvents/preferences.ts
index 94771ce3ff..a37580f7dd 100644
--- a/src/features/liveEvents/preferences.ts
+++ b/src/features/liveEvents/preferences.ts
@@ -1,5 +1,5 @@
import {useEffect} from 'react'
-import {type Agent} from '@atproto/api'
+import {type Agent, type AppBskyActorDefs} from '@atproto/api'
import {useMutation, useQueryClient} from '@tanstack/react-query'
import {logger} from '#/logger'
@@ -53,7 +53,11 @@ export function useUpdateLiveEventPreferences(props?: {
const queryClient = useQueryClient()
const agent = useAgent()
- return useMutation({
+ return useMutation<
+ AppBskyActorDefs.LiveEventPreferences,
+ Error,
+ LiveEventPreferencesAction
+ >({
onError: props?.onError,
onSuccess: props?.onSuccess,
mutationFn: async action => {
@@ -69,7 +73,7 @@ export function useUpdateLiveEventPreferences(props?: {
break
}
case 'toggleHideAllFeeds': {
- if (updated?.hideAllFeeds) {
+ if (updated!.hideAllFeeds) {
logger.metric('liveEventFeed:hideAllFeeds', {})
} else {
logger.metric('liveEventFeed:unhideAllFeeds', {})
@@ -79,9 +83,11 @@ export function useUpdateLiveEventPreferences(props?: {
}
// triggers a refetch
- await queryClient.invalidateQueries({
+ queryClient.invalidateQueries({
queryKey: preferencesQueryKey,
})
+
+ return updated!
},
})
}
diff --git a/src/screens/Settings/ContentAndMediaSettings.tsx b/src/screens/Settings/ContentAndMediaSettings.tsx
index e1144d0645..ebcf95a7af 100644
--- a/src/screens/Settings/ContentAndMediaSettings.tsx
+++ b/src/screens/Settings/ContentAndMediaSettings.tsx
@@ -26,6 +26,7 @@ import {Play_Stroke2_Corner2_Rounded as PlayIcon} from '#/components/icons/Play'
import {Trending2_Stroke2_Corner2_Rounded as Graph} from '#/components/icons/Trending'
import {Window_Stroke2_Corner2_Rounded as WindowIcon} from '#/components/icons/Window'
import * as Layout from '#/components/Layout'
+import {LiveEventFeedsSettingsToggle} from '#/features/liveEvents/components/LiveEventFeedsSettingsToggle'
type Props = NativeStackScreenProps<
CommonNavigatorParams,
@@ -124,7 +125,7 @@ export function ContentAndMediaSettingsScreen({}: Props) {
- {trendingEnabled && (
+ {trendingEnabled ? (
<>
+
>
+ ) : (
+ <>
+
+
+ >
)}