您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import { CONVERSATION_ID_INFO } from '../base/chat/constants'
  2. import { fetchAccessToken } from '@/service/share'
  3. import { getProcessedSystemVariablesFromUrlParams } from '../base/chat/utils'
  4. export const isTokenV1 = (token: Record<string, any>) => {
  5. return !token.version
  6. }
  7. export const getInitialTokenV2 = (): Record<string, any> => ({
  8. version: 2,
  9. })
  10. export const checkOrSetAccessToken = async (appCode?: string | null) => {
  11. const sharedToken = appCode || globalThis.location.pathname.split('/').slice(-1)[0]
  12. const userId = (await getProcessedSystemVariablesFromUrlParams()).user_id
  13. const accessToken = localStorage.getItem('token') || JSON.stringify(getInitialTokenV2())
  14. let accessTokenJson = getInitialTokenV2()
  15. try {
  16. accessTokenJson = JSON.parse(accessToken)
  17. if (isTokenV1(accessTokenJson))
  18. accessTokenJson = getInitialTokenV2()
  19. }
  20. catch {
  21. }
  22. if (!accessTokenJson[sharedToken]?.[userId || 'DEFAULT']) {
  23. const webAppAccessToken = localStorage.getItem('webapp_access_token')
  24. const res = await fetchAccessToken({ appCode: sharedToken, userId, webAppAccessToken })
  25. accessTokenJson[sharedToken] = {
  26. ...accessTokenJson[sharedToken],
  27. [userId || 'DEFAULT']: res.access_token,
  28. }
  29. localStorage.setItem('token', JSON.stringify(accessTokenJson))
  30. }
  31. }
  32. export const setAccessToken = (sharedToken: string, token: string, user_id?: string) => {
  33. const accessToken = localStorage.getItem('token') || JSON.stringify(getInitialTokenV2())
  34. let accessTokenJson = getInitialTokenV2()
  35. try {
  36. accessTokenJson = JSON.parse(accessToken)
  37. if (isTokenV1(accessTokenJson))
  38. accessTokenJson = getInitialTokenV2()
  39. }
  40. catch {
  41. }
  42. localStorage.removeItem(CONVERSATION_ID_INFO)
  43. accessTokenJson[sharedToken] = {
  44. ...accessTokenJson[sharedToken],
  45. [user_id || 'DEFAULT']: token,
  46. }
  47. localStorage.setItem('token', JSON.stringify(accessTokenJson))
  48. }
  49. export const removeAccessToken = () => {
  50. localStorage.removeItem('token')
  51. localStorage.removeItem('webapp_access_token')
  52. }