From adddae9d72b8350807af6b5df6d6cf8df80b8125 Mon Sep 17 00:00:00 2001 From: xmflsct Date: Fri, 3 Feb 2023 15:54:04 +0100 Subject: [PATCH 1/2] Refine push --- src/screens/Tabs/Me/Push.tsx | 39 ++++++++++++------------------------ 1 file changed, 13 insertions(+), 26 deletions(-) diff --git a/src/screens/Tabs/Me/Push.tsx b/src/screens/Tabs/Me/Push.tsx index af2aacc9..14acb6b1 100644 --- a/src/screens/Tabs/Me/Push.tsx +++ b/src/screens/Tabs/Me/Push.tsx @@ -1,5 +1,6 @@ import Button from '@components/Button' import Icon from '@components/Icon' +import { Loading } from '@components/Loading' import { MenuContainer, MenuRow } from '@components/Menu' import { displayMessage } from '@components/Message' import CustomText from '@components/Text' @@ -7,7 +8,6 @@ import * as Sentry from '@sentry/react-native' import apiInstance from '@utils/api/instance' import apiTooot, { TOOOT_API_DOMAIN } from '@utils/api/tooot' import browserPackage from '@utils/helpers/browserPackage' -import { isDevelopment } from '@utils/helpers/checkEnvironment' import { PUSH_ADMIN, PUSH_DEFAULT, setChannels } from '@utils/push/constants' import { updateExpoToken } from '@utils/push/updateExpoToken' import { useAppsQuery } from '@utils/queryHooks/apps' @@ -35,24 +35,7 @@ const TabMePush: React.FC = () => { const [accountDomain] = useAccountStorage.string('auth.account.domain') const [accountId] = useAccountStorage.string('auth.account.id') - const appsQuery = useAppsQuery({ - options: { - enabled: false, - onSuccess: async data => { - if (data.vapid_key) { - await checkPush() - if (isDevelopment) { - setPushAvailable(true) - } else { - setPushAvailable(!!expoToken?.length) - } - } - } - } - }) - useEffect(() => { - appsQuery.refetch() - }, []) + const appsQuery = useAppsQuery() const checkPush = async () => { const permissions = await Notifications.getPermissionsAsync() @@ -61,11 +44,9 @@ const TabMePush: React.FC = () => { layoutAnimation() await updateExpoToken() } - - const [pushAvailable, setPushAvailable] = useState() - const [pushEnabled, setPushEnabled] = useState() - const [pushCanAskAgain, setPushCanAskAgain] = useState() - + useEffect(() => { + checkPush() + }, []) useEffect(() => { const subscription = AppState.addEventListener('change', checkPush) return () => { @@ -73,6 +54,9 @@ const TabMePush: React.FC = () => { } }, []) + const [pushEnabled, setPushEnabled] = useState() + const [pushCanAskAgain, setPushCanAskAgain] = useState() + const alerts = () => push?.alerts ? PUSH_DEFAULT().map(alert => ( @@ -133,11 +117,11 @@ const TabMePush: React.FC = () => { const pushPath = `${expoToken}/${domain}/${accountId}` const accountFull = `@${accountAcct}@${accountDomain}` - return ( + return appsQuery.isFetched ? ( {!!appsQuery.data?.vapid_key ? ( <> - {!!pushAvailable ? ( + {!!expoToken?.length ? ( <> {pushEnabled === false ? ( @@ -249,6 +233,7 @@ const TabMePush: React.FC = () => { method: 'delete', url: 'push/subscription' }) + return Promise.reject() }) setAccountStorage([ @@ -352,6 +337,8 @@ const TabMePush: React.FC = () => { )} + ) : ( + ) } From 9f6e7738bfe28b2af454670651f861c6de9a9700 Mon Sep 17 00:00:00 2001 From: xmflsct Date: Fri, 3 Feb 2023 16:06:18 +0100 Subject: [PATCH 2/2] Fix when userTheme is undefined --- src/utils/styles/ThemeManager.tsx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/utils/styles/ThemeManager.tsx b/src/utils/styles/ThemeManager.tsx index 8e7082f0..c83e2f1b 100644 --- a/src/utils/styles/ThemeManager.tsx +++ b/src/utils/styles/ThemeManager.tsx @@ -43,6 +43,11 @@ const useColorSchemeDelay = (delay = 250) => { return colorScheme } +const determineMode = ( + osTheme: 'light' | 'dark' | null | undefined, + userTheme: StorageGlobal['app.theme'] +): 'light' | 'dark' => + !userTheme || userTheme === 'auto' ? osTheme || 'light' : userTheme || 'light' const determineTheme = ( osTheme: 'light' | 'dark' | null | undefined, userTheme: StorageGlobal['app.theme'], @@ -75,13 +80,11 @@ const ThemeManager: React.FC = ({ children }) => { const [userTheme] = useGlobalStorage.string('app.theme') const [darkTheme] = useGlobalStorage.string('app.theme.dark') - const [mode, setMode] = useState<'light' | 'dark'>( - userTheme === 'auto' ? osTheme || 'light' : userTheme || 'light' - ) + const [mode, setMode] = useState<'light' | 'dark'>(determineMode(osTheme, userTheme)) const [theme, setTheme] = useState(determineTheme(osTheme, userTheme, darkTheme)) useEffect(() => { - setMode(userTheme === 'auto' ? osTheme || 'light' : userTheme || 'light') + setMode(determineMode(osTheme, userTheme)) }, [osTheme, userTheme]) useEffect(() => { setTheme(determineTheme(osTheme, userTheme, darkTheme))