all state migrated to zustand, jotai removed

splash page now waits on state hydration from db
This commit is contained in:
austinried
2021-08-04 13:13:32 +09:00
parent 33dc0be02b
commit 706e57aa77
23 changed files with 427 additions and 660 deletions

View File

@@ -3,8 +3,14 @@ import { createSettingsSlice, SettingsSlice } from '@app/state/settings'
import AsyncStorage from '@react-native-async-storage/async-storage'
import create from 'zustand'
import { persist, StateStorage } from 'zustand/middleware'
import { createTrackPlayerSlice, TrackPlayerSlice } from './trackplayer'
export type Store = SettingsSlice & MusicSlice
export type Store = SettingsSlice &
MusicSlice &
TrackPlayerSlice & {
hydrated: boolean
setHydrated: (hydrated: boolean) => void
}
const storage: StateStorage = {
getItem: async name => {
@@ -29,6 +35,10 @@ export const useStore = create<Store>(
(set, get) => ({
...createSettingsSlice(set, get),
...createMusicSlice(set, get),
...createTrackPlayerSlice(set, get),
hydrated: false,
setHydrated: hydrated => set({ hydrated }),
}),
{
name: '@appStore',
@@ -37,6 +47,7 @@ export const useStore = create<Store>(
onRehydrateStorage: _preState => {
return (postState, _error) => {
postState?.createClient(postState.settings.activeServer)
postState?.setHydrated(true)
}
},
},