TestEShopDist/src/reducers/userInfo.ts
2022-12-29 12:59:54 +08:00

128 lines
3.7 KiB
TypeScript

import Taro from '@tarojs/taro'
import {
CLEAR_ADMINUSERINFO,
CLEAR_SESSIONKEY,
CLEAR_SORTCODE,
CLEAR_TOKEN,
CLEAR_USERINFO,
LOGIN_STATUS,
SET_ADMINUSERINFO,
SET_SESSIONKEY,
SET_SORTCODE,
SET_TOKEN,
SET_USERINFO,
} from '../constants/userInfo'
export interface UserParam {
nickName?: string
phone?: string
avatarUrl?: string
city?: string
country?: string
province?: string
gender?: number
language?: string
timestamp?: number
physical_warehouse?: number
physical_warehouse_name?: string
}
export interface UserAdminParam {
avatar_url: string
open_id: string
physical_warehouse: number
physical_warehouse_name: string
union_id: string
user_code: string
user_id: number
user_name: string
wechat_user_open_id: number
is_authorize_name: boolean
is_authorize_phone: boolean
phone: string
authentication_status: number
authentication_status_name: string
company_id: number
company_name: string
first_change_name: boolean
founder_user_id: string
founder_user_name: string
order_access_status: number
order_access_status_name: string
purchaser_type: number
purchaser_type_name: string
collection_quantity: number
sale_user_phone: string
sale_user_name: string
sale_user_id: number|string
}
export interface SortCodeParam {
shareShortDetail?: { title: string; code: string; img: string } // 详情分享页面短码
shareShortPage?: { title: string; code: string; img: string } // 右上角分享页面短码
}
export interface DataParam {
token?: string
session_key?: string
userInfo: UserParam
adminUserInfo: UserAdminParam
sort_code: SortCodeParam
logingStatus?: false // 登录状态 true 正在登录
}
interface Action {
type?: string
data?: DataParam
}
const INIT_USER = {
userInfo: Taro.getStorageSync('userInfo') ? JSON.parse(Taro.getStorageSync('userInfo')) : null,
adminUserInfo: Taro.getStorageSync('adminUserInfo') ? JSON.parse(Taro.getStorageSync('adminUserInfo')) : null,
token: Taro.getStorageSync('token') || '',
session_key: Taro.getStorageSync('session_key') || '',
sort_code: Taro.getStorageSync('sort_code') ? JSON.parse(Taro.getStorageSync('sort_code')) : null,
logingStatus: false,
}
export default function counter(state = INIT_USER, action: Action) {
const { type, data } = action
switch (type) {
case SET_USERINFO:
Taro.setStorageSync('userInfo', JSON.stringify(data?.userInfo))
return { ...state, ...data }
case SET_ADMINUSERINFO:
Taro.setStorageSync('adminUserInfo', JSON.stringify(data?.adminUserInfo))
return { ...state, ...data }
case SET_TOKEN:
Taro.setStorageSync('token', data?.token)
return { ...state, ...data }
case SET_SESSIONKEY:
Taro.setStorageSync('session_key', data?.session_key)
return { ...state, ...data }
case SET_SORTCODE:
Taro.setStorageSync('sort_code', JSON.stringify(data?.sort_code))
return { ...state, ...data }
case CLEAR_TOKEN:
Taro.removeStorageSync('token')
return { ...state, token: '' }
case CLEAR_SESSIONKEY:
Taro.removeStorageSync('session_key')
return { ...state, session_key: '' }
case CLEAR_USERINFO:
Taro.removeStorageSync('userInfo')
return { ...state, userInfo: null }
case CLEAR_ADMINUSERINFO:
Taro.removeStorageSync('adminUserInfo')
return { ...state, adminUserInfo: null }
case CLEAR_SORTCODE:
Taro.removeStorageSync('sort_code')
return { ...state, sortCode: null }
case LOGIN_STATUS:
return { ...state, ...data }
default:
return state
}
}