| @@ -15,6 +15,14 @@ const SwrInitor = ({ | |||
| const searchParams = useSearchParams() | |||
| const consoleToken = searchParams.get('console_token') | |||
| const consoleTokenFromLocalStorage = localStorage?.getItem('console_token') | |||
| const utm = { | |||
| utm_source: searchParams.get('utm_source') || '', | |||
| utm_medium: searchParams.get('utm_medium') || '', | |||
| utm_campaign: searchParams.get('utm_campaign') || '', | |||
| utm_content: searchParams.get('utm_content') || '', | |||
| utm_term: searchParams.get('utm_term') || '', | |||
| } | |||
| localStorage?.setItem('utm', JSON.stringify(utm)) | |||
| const [init, setInit] = useState(false) | |||
| useEffect(() => { | |||
| @@ -23,7 +31,7 @@ const SwrInitor = ({ | |||
| if (consoleToken) { | |||
| localStorage?.setItem('console_token', consoleToken!) | |||
| router.replace('/apps', { forceOptimisticNavigation: false }) | |||
| router.replace('/apps', { forceOptimisticNavigation: false } as any) | |||
| } | |||
| setInit(true) | |||
| }, []) | |||
| @@ -7,6 +7,7 @@ import { | |||
| fetchModelList, | |||
| fetchModelProviders, | |||
| fetchSupportRetrievalMethods, | |||
| operationUtm, | |||
| } from '@/service/common' | |||
| import { | |||
| ModelFeatureEnum, | |||
| @@ -97,6 +98,23 @@ export const ProviderContextProvider = ({ | |||
| const [isFetchedPlan, setIsFetchedPlan] = useState(false) | |||
| const [enableBilling, setEnableBilling] = useState(true) | |||
| const [enableReplaceWebAppLogo, setEnableReplaceWebAppLogo] = useState(false) | |||
| const handleOperateUtm = () => { | |||
| let utm | |||
| try { | |||
| utm = JSON.parse(localStorage?.getItem('utm') || '{}') | |||
| } | |||
| catch (e) { | |||
| utm = { | |||
| utm_source: '', | |||
| utm_medium: '', | |||
| utm_campaign: '', | |||
| utm_content: '', | |||
| utm_term: '', | |||
| } | |||
| } | |||
| operationUtm({ url: '/operation/utm', body: utm }) | |||
| } | |||
| useEffect(() => { | |||
| (async () => { | |||
| const data = await fetchCurrentPlanInfo() | |||
| @@ -105,13 +123,7 @@ export const ProviderContextProvider = ({ | |||
| setEnableReplaceWebAppLogo(data.can_replace_logo) | |||
| if (enabled) { | |||
| setPlan(parseCurrentPlan(data)) | |||
| // setPlan(parseCurrentPlan({ | |||
| // ...data, | |||
| // annotation_quota_limit: { | |||
| // ...data.annotation_quota_limit, | |||
| // limit: 10, | |||
| // }, | |||
| // })) | |||
| handleOperateUtm() | |||
| setIsFetchedPlan(true) | |||
| } | |||
| })() | |||
| @@ -251,3 +251,11 @@ export type ModerationService = ( | |||
| text: string | |||
| } | |||
| ) => Promise<ModerateResponse> | |||
| export type Utm = { | |||
| utm_source?: string | |||
| utm_medium?: string | |||
| utm_campaign?: string | |||
| utm_term?: string | |||
| utm_content?: string | |||
| } | |||
| @@ -20,6 +20,7 @@ import type { | |||
| ProviderAzureToken, | |||
| SetupStatusResponse, | |||
| UserProfileOriginResponse, | |||
| Utm, | |||
| } from '@/models/common' | |||
| import type { | |||
| UpdateOpenAIKeyResponse, | |||
| @@ -262,3 +263,7 @@ type RetrievalMethodsRes = { | |||
| export const fetchSupportRetrievalMethods: Fetcher<RetrievalMethodsRes, string> = (url) => { | |||
| return get<RetrievalMethodsRes>(url) | |||
| } | |||
| export const operationUtm: Fetcher<CommonResponse, { url: string; body: Utm }> = ({ url, body }) => { | |||
| return post(url, { body }) as Promise<CommonResponse> | |||
| } | |||