Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

utils.ts 2.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. localStorage.removeItem(CONVERSATION_ID_INFO)
  31. }
  32. }
  33. export const setAccessToken = (sharedToken: string, token: string, user_id?: string) => {
  34. const accessToken = localStorage.getItem('token') || JSON.stringify(getInitialTokenV2())
  35. let accessTokenJson = getInitialTokenV2()
  36. try {
  37. accessTokenJson = JSON.parse(accessToken)
  38. if (isTokenV1(accessTokenJson))
  39. accessTokenJson = getInitialTokenV2()
  40. }
  41. catch {
  42. }
  43. localStorage.removeItem(CONVERSATION_ID_INFO)
  44. accessTokenJson[sharedToken] = {
  45. ...accessTokenJson[sharedToken],
  46. [user_id || 'DEFAULT']: token,
  47. }
  48. localStorage.setItem('token', JSON.stringify(accessTokenJson))
  49. }
  50. export const removeAccessToken = () => {
  51. localStorage.removeItem('token')
  52. localStorage.removeItem('webapp_access_token')
  53. }