storage.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import { IUserInfo, IOptions } from "../types"
  2. import { getDefaultLanguage } from "./utils"
  3. const USER_INFO_KEY = "__user_info__"
  4. const OPTIONS_KEY = "__options__"
  5. export const DEFAULT_USER_INFO: IUserInfo = {
  6. userId: 0,
  7. userName: "",
  8. }
  9. export const DEFAULT_OPTIONS = {
  10. language: getDefaultLanguage(),
  11. channel: "",
  12. }
  13. export const getUserInfoFromLocal = (): IUserInfo => {
  14. const userInfo = localStorage.getItem(USER_INFO_KEY)
  15. return userInfo ? JSON.parse(userInfo) : JSON.parse(JSON.stringify(DEFAULT_USER_INFO))
  16. }
  17. export const setUserInfoToLocal = (userInfo: Partial<IUserInfo>) => {
  18. const curUserInfo = getUserInfoFromLocal()
  19. if (userInfo.userId) {
  20. curUserInfo.userId = userInfo.userId
  21. }
  22. if (userInfo.userName) {
  23. curUserInfo.userName = userInfo.userName
  24. }
  25. localStorage.setItem(USER_INFO_KEY, JSON.stringify(curUserInfo))
  26. }
  27. export const removeUserInfoFromLocal = () => {
  28. localStorage.removeItem(USER_INFO_KEY)
  29. }
  30. export const getOptionsFromLocal = (): IOptions => {
  31. const options = localStorage.getItem(OPTIONS_KEY)
  32. return options ? JSON.parse(options) : JSON.parse(JSON.stringify(DEFAULT_OPTIONS))
  33. }
  34. export const setOptionsToLocal = (options: Partial<IOptions>) => {
  35. const curOptions = getOptionsFromLocal()
  36. if (options.language) {
  37. curOptions.language = options.language
  38. }
  39. if (options.channel) {
  40. curOptions.channel = options.channel
  41. }
  42. localStorage.setItem(OPTIONS_KEY, JSON.stringify(curOptions))
  43. }