import { AuthState } from './state'
import { isObject } from 'lodash-es'
import { Song } from '@/interface'
export const AUTH_MUTATIONS = {
LOGIN: 'LOGIN',
LOGOUT: 'LOGOUT',
SHOW_VIEW: 'SHOW_VIEW',
HIDE_VIEW: 'HIDE_VIEW',
UPDATE_USER: 'UPDATE_USER',
USER_INFO_LOADING: 'USER_INFO_LOADING',
USER_PLAY_LIST: 'USER_PLAY_LIST'
}
export const mutations = {
[AUTH_MUTATIONS.LOGIN]: (state: AuthState, info: AuthState['user']) => {
state.user = info
},
[AUTH_MUTATIONS.UPDATE_USER]: (state: AuthState, { key, value }: any) => {
if (!state.user) {
return
}
const info = state.user[key]
if (isObject(value)) {
state.user[key] = { ...info, ...value }
} else {
state.user[key] = value
}
},
[AUTH_MUTATIONS.LOGOUT]: (state: AuthState) => {
state.user = null
},
[AUTH_MUTATIONS.SHOW_VIEW]: (state: AuthState) => {
state.show = true
},
[AUTH_MUTATIONS.HIDE_VIEW]: (state: AuthState) => {
state.show = false
},
[AUTH_MUTATIONS.USER_INFO_LOADING]: (state: AuthState, value: boolean) => {
state.userInfoLoading = value
},
[AUTH_MUTATIONS.USER_PLAY_LIST]: (state: AuthState, value: Song[]) => {
state.playlist = value
}
}
export const getters = {
isLogin: (state: AuthState) => !!state.user
}