diff --git a/src/components/Timeline/Shared/Attachment/Video.tsx b/src/components/Timeline/Shared/Attachment/Video.tsx index 4489efb1..730c3248 100644 --- a/src/components/Timeline/Shared/Attachment/Video.tsx +++ b/src/components/Timeline/Shared/Attachment/Video.tsx @@ -64,7 +64,7 @@ const AttachmentVideo: React.FC = ({ }, []) const _handleAppStateChange = async (nextAppState: AppStateStatus) => { if (appState.current.match(/active/) && nextAppState.match(/inactive/)) { - await videoPlayer.current?.stopAsync() + // await videoPlayer.current?.stopAsync() } else if (gifv && appState.current.match(/background/) && nextAppState.match(/active/)) { await videoPlayer.current?.setIsMutedAsync(true) await videoPlayer.current?.playAsync() diff --git a/src/store.ts b/src/store.ts index 06942508..f2635cad 100644 --- a/src/store.ts +++ b/src/store.ts @@ -4,7 +4,7 @@ import { AnyAction, configureStore, Reducer } from '@reduxjs/toolkit' import contextsMigration from '@utils/migrations/contexts/migration' import instancesMigration from '@utils/migrations/instances/migration' import settingsMigration from '@utils/migrations/settings/migration' -import appSlice from '@utils/slices/appSlice' +import appSlice, { AppState } from '@utils/slices/appSlice' import contextsSlice, { ContextsState } from '@utils/slices/contextsSlice' import instancesSlice, { InstancesState } from '@utils/slices/instancesSlice' import settingsSlice, { SettingsState } from '@utils/slices/settingsSlice' @@ -26,6 +26,13 @@ const secureStorage = createSecureStore() const prefix = 'tooot' +const appPersistConfig = { + key: 'app', + prefix, + storage: AsyncStorage, + version: 0 +} + const contextsPersistConfig = { key: 'contexts', prefix, @@ -55,19 +62,19 @@ const settingsPersistConfig = { const store = configureStore({ reducer: { + app: persistReducer(appPersistConfig, appSlice) as Reducer, contexts: persistReducer(contextsPersistConfig, contextsSlice) as Reducer< ContextsState, AnyAction >, - instances: persistReducer( - instancesPersistConfig, - instancesSlice - ) as Reducer, + instances: persistReducer(instancesPersistConfig, instancesSlice) as Reducer< + InstancesState, + AnyAction + >, settings: persistReducer(settingsPersistConfig, settingsSlice) as Reducer< SettingsState, AnyAction - >, - app: appSlice + > }, middleware: getDefaultMiddleware => getDefaultMiddleware({ diff --git a/src/utils/migrations/app/v0.ts b/src/utils/migrations/app/v0.ts new file mode 100644 index 00000000..99a738db --- /dev/null +++ b/src/utils/migrations/app/v0.ts @@ -0,0 +1,4 @@ +export type AppV0 = { + expoToken?: string + versionUpdate: boolean +} diff --git a/src/utils/push/useConnect.ts b/src/utils/push/useConnect.ts index 342a77f2..d519f71d 100644 --- a/src/utils/push/useConnect.ts +++ b/src/utils/push/useConnect.ts @@ -33,53 +33,55 @@ const pushUseConnect = ({ t, instances }: Params) => { method: 'get', url: `push/connect/${expoToken}`, sentry: true - }).catch(error => { - Sentry.setExtras({ - API: 'tooot', - ...(error?.response && { response: error.response }), - ...(error?.request && { request: error.request }) - }) - Sentry.captureException(error) - Notifications.setBadgeCountAsync(0) - if (error?.status == 404) { - displayMessage({ - theme, - type: 'error', - duration: 'long', - message: t('pushError.message'), - description: t('pushError.description'), - onPress: () => { - navigationRef.navigate('Screen-Tabs', { - screen: 'Tab-Me', - params: { - screen: 'Tab-Me-Root' - } - }) - navigationRef.navigate('Screen-Tabs', { - screen: 'Tab-Me', - params: { - screen: 'Tab-Me-Settings' - } - }) - } - }) - - dispatch(disableAllPushes()) - - instances.forEach(instance => { - if (instance.push.global.value) { - apiGeneral<{}>({ - method: 'delete', - domain: instance.url, - url: 'api/v1/push/subscription', - headers: { - Authorization: `Bearer ${instance.token}` - } - }).catch(() => console.log('error!!!')) - } - }) - } }) + .then(() => Notifications.setBadgeCountAsync(0)) + .catch(error => { + Sentry.setExtras({ + API: 'tooot', + ...(error?.response && { response: error.response }), + ...(error?.request && { request: error.request }) + }) + Sentry.captureException(error) + Notifications.setBadgeCountAsync(0) + if (error?.status == 404) { + displayMessage({ + theme, + type: 'error', + duration: 'long', + message: t('pushError.message'), + description: t('pushError.description'), + onPress: () => { + navigationRef.navigate('Screen-Tabs', { + screen: 'Tab-Me', + params: { + screen: 'Tab-Me-Root' + } + }) + navigationRef.navigate('Screen-Tabs', { + screen: 'Tab-Me', + params: { + screen: 'Tab-Me-Settings' + } + }) + } + }) + + dispatch(disableAllPushes()) + + instances.forEach(instance => { + if (instance.push.global.value) { + apiGeneral<{}>({ + method: 'delete', + domain: instance.url, + url: 'api/v1/push/subscription', + headers: { + Authorization: `Bearer ${instance.token}` + } + }).catch(() => console.log('error!!!')) + } + }) + } + }) } const pushEnabled = instances.filter(instance => instance.push.global.value) @@ -89,7 +91,6 @@ const pushUseConnect = ({ t, instances }: Params) => { if (expoToken && pushEnabled.length && state === 'active') { Notifications.getBadgeCountAsync().then(count => { if (count > 0) { - Notifications.setBadgeCountAsync(0) connect() } }) @@ -102,7 +103,6 @@ const pushUseConnect = ({ t, instances }: Params) => { }, [expoToken, pushEnabled.length]) return useEffect(() => { - Notifications.setBadgeCountAsync(0) if (expoToken && pushEnabled.length) { connect() }