mirror of
https://github.com/qier222/YesPlayMusic.git
synced 2025-02-19 10:22:45 +08:00
37 lines
774 B
TypeScript
37 lines
774 B
TypeScript
![]() |
import { RefObject } from 'react'
|
||
|
import { proxy, subscribe } from 'valtio'
|
||
|
import { devtools } from 'valtio/utils'
|
||
|
import { player as PlayerCore } from '@/utils/player'
|
||
|
|
||
|
interface Store {
|
||
|
uiStates: {
|
||
|
loginPhoneCountryCode: string
|
||
|
}
|
||
|
settings: {
|
||
|
showSidebar: boolean
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const initialState: Store = {
|
||
|
uiStates: {
|
||
|
loginPhoneCountryCode: '+86',
|
||
|
},
|
||
|
settings: {
|
||
|
showSidebar: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
const stateInLocalStorage = localStorage.getItem('state')
|
||
|
export const state = proxy<Store>(
|
||
|
(stateInLocalStorage && JSON.parse(stateInLocalStorage)) || initialState
|
||
|
)
|
||
|
subscribe(state, () => {
|
||
|
localStorage.setItem('state', JSON.stringify(state))
|
||
|
})
|
||
|
|
||
|
export const player = proxy(PlayerCore)
|
||
|
|
||
|
// Devtools
|
||
|
devtools(state, 'state')
|
||
|
devtools(player, 'player')
|