mirror of
https://github.com/austinried/subtracks.git
synced 2026-02-10 06:52:43 +01:00
big ol' impl of zustand for settings/family states
still need to move track player state over for non-react access to that
This commit is contained in:
42
app/state/store.ts
Normal file
42
app/state/store.ts
Normal file
@@ -0,0 +1,42 @@
|
||||
import { createMusicSlice, MusicSlice } from '@app/state/music'
|
||||
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'
|
||||
|
||||
export type Store = SettingsSlice & MusicSlice
|
||||
|
||||
const storage: StateStorage = {
|
||||
getItem: async name => {
|
||||
try {
|
||||
return await AsyncStorage.getItem(name)
|
||||
} catch (err) {
|
||||
console.error(`getItem error (key: ${name})`, err)
|
||||
return null
|
||||
}
|
||||
},
|
||||
setItem: async (name, item) => {
|
||||
try {
|
||||
await AsyncStorage.setItem(name, item)
|
||||
} catch (err) {
|
||||
console.error(`setItem error (key: ${name})`, err)
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
export const useStore = create<Store>(
|
||||
persist(
|
||||
(set, get) => ({
|
||||
...createSettingsSlice(set, get),
|
||||
...createMusicSlice(set, get),
|
||||
}),
|
||||
{
|
||||
name: '@appStore',
|
||||
getStorage: () => storage,
|
||||
whitelist: ['settings'],
|
||||
// onRehydrateStorage: state => {
|
||||
// return (state, error) => {}
|
||||
// },
|
||||
},
|
||||
),
|
||||
)
|
||||
Reference in New Issue
Block a user