1
0
mirror of https://github.com/tooot-app/app synced 2025-06-05 22:19:13 +02:00

619 restructure local storage (#628)

* To MMKV migration working

* POC migrated font size settings

* Moved settings to mmkv

* Fix typos

* Migrated contexts slice

* Migrated app slice

* POC instance emoji update

* Migrated drafts

* Migrated simple instance properties

* All migrated!

* Re-structure files

* Tolerant of undefined settings

* Can properly logging in and out including empty state
This commit is contained in:
xmflsct
2022-12-28 23:41:36 +01:00
committed by GitHub
parent 71ccb4a93c
commit 1ea6aff328
214 changed files with 2151 additions and 3694 deletions

View File

@ -8,13 +8,12 @@ import { TabLocalStackParamList } from '@utils/navigation/navigators'
import usePopToTop from '@utils/navigation/usePopToTop'
import { useListsQuery } from '@utils/queryHooks/lists'
import { QueryKeyTimeline } from '@utils/queryHooks/timeline'
import { getInstanceFollowingPage, updateInstanceFollowingPage } from '@utils/slices/instancesSlice'
import { setAccountStorage, useAccountStorage } from '@utils/storage/actions'
import { StyleConstants } from '@utils/styles/constants'
import { useTheme } from '@utils/styles/ThemeManager'
import { useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next'
import { View } from 'react-native'
import { useDispatch, useSelector } from 'react-redux'
import * as DropdownMenu from 'zeego/dropdown-menu'
const Root: React.FC<NativeStackScreenProps<TabLocalStackParamList, 'Tab-Local-Root'>> = ({
@ -25,11 +24,10 @@ const Root: React.FC<NativeStackScreenProps<TabLocalStackParamList, 'Tab-Local-R
const { data: lists } = useListsQuery()
const dispatch = useDispatch()
const instanceFollowingPage = useSelector(getInstanceFollowingPage)
const [pageLocal] = useAccountStorage.object('page_local')
const [queryKey, setQueryKey] = useState<QueryKeyTimeline>([
'Timeline',
{ page: 'Following', ...instanceFollowingPage }
{ page: 'Following', ...pageLocal }
])
useEffect(() => {
@ -59,7 +57,7 @@ const Root: React.FC<NativeStackScreenProps<TabLocalStackParamList, 'Tab-Local-R
: t('tabs.local.name')
}
/>
{page.page === 'Following' && !instanceFollowingPage.showBoosts ? (
{page.page === 'Following' && !pageLocal.showBoosts ? (
<Icon
name='Repeat'
size={StyleConstants.Font.Size.M}
@ -68,7 +66,7 @@ const Root: React.FC<NativeStackScreenProps<TabLocalStackParamList, 'Tab-Local-R
crossOut
/>
) : null}
{page.page === 'Following' && !instanceFollowingPage.showReplies ? (
{page.page === 'Following' && !pageLocal.showReplies ? (
<Icon
name='MessageCircle'
size={StyleConstants.Font.Size.M}
@ -90,9 +88,7 @@ const Root: React.FC<NativeStackScreenProps<TabLocalStackParamList, 'Tab-Local-R
<DropdownMenu.Group>
<DropdownMenu.Item
key='default'
onSelect={() =>
setQueryKey(['Timeline', { page: 'Following', ...instanceFollowingPage }])
}
onSelect={() => setQueryKey(['Timeline', { page: 'Following', ...pageLocal }])}
disabled={page.page === 'Following'}
>
<DropdownMenu.ItemTitle children={t('tabs.local.name')} />
@ -100,19 +96,22 @@ const Root: React.FC<NativeStackScreenProps<TabLocalStackParamList, 'Tab-Local-R
</DropdownMenu.Item>
<DropdownMenu.CheckboxItem
key='showBoosts'
value={instanceFollowingPage.showBoosts ? 'on' : 'off'}
value={pageLocal.showBoosts ? 'on' : 'off'}
onValueChange={() => {
setQueryKey([
'Timeline',
{
page: 'Following',
showBoosts: !instanceFollowingPage.showBoosts,
showReplies: instanceFollowingPage.showReplies
showBoosts: !pageLocal.showBoosts,
showReplies: pageLocal.showReplies
}
])
setAccountStorage([
{
key: 'page_local',
value: { ...pageLocal, showBoosts: !pageLocal.showBoosts }
}
])
dispatch(
updateInstanceFollowingPage({ showBoosts: !instanceFollowingPage.showBoosts })
)
}}
>
<DropdownMenu.ItemIndicator />
@ -120,19 +119,22 @@ const Root: React.FC<NativeStackScreenProps<TabLocalStackParamList, 'Tab-Local-R
</DropdownMenu.CheckboxItem>
<DropdownMenu.CheckboxItem
key='showReplies'
value={instanceFollowingPage.showReplies ? 'on' : 'off'}
value={pageLocal.showReplies ? 'on' : 'off'}
onValueChange={() => {
setQueryKey([
'Timeline',
{
page: 'Following',
showBoosts: instanceFollowingPage.showBoosts,
showReplies: !instanceFollowingPage.showReplies
showBoosts: pageLocal.showBoosts,
showReplies: !pageLocal.showReplies
}
])
setAccountStorage([
{
key: 'page_local',
value: { ...pageLocal, showReplies: !pageLocal.showReplies }
}
])
dispatch(
updateInstanceFollowingPage({ showReplies: !instanceFollowingPage.showReplies })
)
}}
>
<DropdownMenu.ItemTitle children={t('tabs.local.options.showReplies')} />
@ -174,7 +176,7 @@ const Root: React.FC<NativeStackScreenProps<TabLocalStackParamList, 'Tab-Local-R
/>
)
})
}, [mode, queryKey[1], instanceFollowingPage, lists])
}, [mode, queryKey[1], pageLocal, lists])
usePopToTop()