@anker-in/campaign-ui 0.5.5 → 0.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/cjs/components/credits/context/hooks/useAlpcFetch.js +1 -1
  2. package/dist/cjs/components/credits/context/hooks/useAlpcFetch.js.map +2 -2
  3. package/dist/cjs/components/credits/context/hooks/useCountries.js +1 -1
  4. package/dist/cjs/components/credits/context/hooks/useCountries.js.map +2 -2
  5. package/dist/cjs/components/credits/context/hooks/useShippingCountries.js +1 -1
  6. package/dist/cjs/components/credits/context/hooks/useShippingCountries.js.map +2 -2
  7. package/dist/cjs/components/credits/context/hooks/useSubscribed.js +1 -1
  8. package/dist/cjs/components/credits/context/hooks/useSubscribed.js.map +3 -3
  9. package/dist/cjs/components/memberPopup/panels/ActivitiesSubscribePanel.js +1 -1
  10. package/dist/cjs/components/memberPopup/panels/ActivitiesSubscribePanel.js.map +2 -2
  11. package/dist/cjs/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemCoupon.js +1 -1
  12. package/dist/cjs/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemCoupon.js.map +2 -2
  13. package/dist/cjs/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemableList.js +1 -1
  14. package/dist/cjs/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemableList.js.map +2 -2
  15. package/dist/cjs/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.js +1 -1
  16. package/dist/cjs/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.js.map +2 -2
  17. package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useActivities.js +1 -1
  18. package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useActivities.js.map +2 -2
  19. package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useSubscribed.js +1 -1
  20. package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useSubscribed.js.map +2 -2
  21. package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.js +1 -1
  22. package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.js.map +2 -2
  23. package/dist/cjs/components/memberPopup/panels/Referral/hooks/useReferralOverview.js +1 -1
  24. package/dist/cjs/components/memberPopup/panels/Referral/hooks/useReferralOverview.js.map +2 -2
  25. package/dist/esm/components/credits/context/hooks/useAlpcFetch.js +1 -1
  26. package/dist/esm/components/credits/context/hooks/useAlpcFetch.js.map +2 -2
  27. package/dist/esm/components/credits/context/hooks/useCountries.js +1 -1
  28. package/dist/esm/components/credits/context/hooks/useCountries.js.map +2 -2
  29. package/dist/esm/components/credits/context/hooks/useShippingCountries.js +1 -1
  30. package/dist/esm/components/credits/context/hooks/useShippingCountries.js.map +2 -2
  31. package/dist/esm/components/credits/context/hooks/useSubscribed.js +1 -1
  32. package/dist/esm/components/credits/context/hooks/useSubscribed.js.map +3 -3
  33. package/dist/esm/components/memberPopup/panels/ActivitiesSubscribePanel.js +1 -1
  34. package/dist/esm/components/memberPopup/panels/ActivitiesSubscribePanel.js.map +2 -2
  35. package/dist/esm/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemCoupon.js +1 -1
  36. package/dist/esm/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemCoupon.js.map +2 -2
  37. package/dist/esm/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemableList.js +1 -1
  38. package/dist/esm/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemableList.js.map +2 -2
  39. package/dist/esm/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.js +1 -1
  40. package/dist/esm/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.js.map +2 -2
  41. package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useActivities.js +1 -1
  42. package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useActivities.js.map +2 -2
  43. package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useSubscribed.js +1 -1
  44. package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useSubscribed.js.map +2 -2
  45. package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.js +1 -1
  46. package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.js.map +2 -2
  47. package/dist/esm/components/memberPopup/panels/Referral/hooks/useReferralOverview.js +1 -1
  48. package/dist/esm/components/memberPopup/panels/Referral/hooks/useReferralOverview.js.map +2 -2
  49. package/package.json +1 -1
  50. package/src/components/credits/context/hooks/useAlpcFetch.ts +2 -2
  51. package/src/components/credits/context/hooks/useCountries.ts +1 -0
  52. package/src/components/credits/context/hooks/useShippingCountries.ts +1 -0
  53. package/src/components/credits/context/hooks/useSubscribed.ts +2 -2
  54. package/src/components/memberPopup/panels/ActivitiesSubscribePanel.tsx +1 -0
  55. package/src/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemCoupon.ts +4 -3
  56. package/src/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemableList.ts +4 -3
  57. package/src/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.tsx +1 -0
  58. package/src/components/memberPopup/panels/EarnCredits/hooks/useActivities.ts +4 -3
  59. package/src/components/memberPopup/panels/EarnCredits/hooks/useSubscribed.ts +1 -1
  60. package/src/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.ts +1 -0
  61. package/src/components/memberPopup/panels/Referral/hooks/useReferralOverview.ts +1 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/components/memberPopup/panels/Referral/hooks/useReferralOverview.ts"],
4
- "sourcesContent": ["import useSWR from 'swr'\nimport { useMemberPopupContext } from '../../../context/provider'\n\nexport type ReferralRewardOverviewResponse = {\n data: {\n data: {\n available: number\n pending: number\n }\n }\n}\n\nexport function useReferralOverview(): {\n isLoading: boolean\n data?: ReferralRewardOverviewResponse\n} {\n const { profile, alpcConfig } = useMemberPopupContext()\n const isLogin = !!profile\n\n const swrKey = isLogin ? `/api/multipass/mktsrv/v1/referral/reward/overview/cash` : null\n\n const swrFetcher = async (url: string) => {\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'current-language': alpcConfig.locale,\n },\n })\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`)\n }\n return response.json()\n }\n\n const { data, isLoading } = useSWR<ReferralRewardOverviewResponse>(swrKey, swrFetcher, {\n revalidateOnFocus: false,\n })\n\n return { isLoading, data }\n}\n"],
5
- "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmB,kBACnBC,EAAsC,qCAW/B,SAASH,GAGd,CACA,KAAM,CAAE,QAAAI,EAAS,WAAAC,CAAW,KAAI,yBAAsB,EAGhDC,EAFU,CAAC,CAACF,EAEO,yDAA2D,KAE9EG,EAAa,MAAOC,GAAgB,CACxC,MAAMC,EAAW,MAAM,MAAMD,EAAK,CAChC,OAAQ,MACR,QAAS,CACP,eAAgB,mBAChB,mBAAoBH,EAAW,MACjC,CACF,CAAC,EACD,GAAI,CAACI,EAAS,GACZ,MAAM,IAAI,MAAM,uBAAuBA,EAAS,MAAM,EAAE,EAE1D,OAAOA,EAAS,KAAK,CACvB,EAEM,CAAE,KAAAC,EAAM,UAAAC,CAAU,KAAI,EAAAC,SAAuCN,EAAQC,EAAY,CACrF,kBAAmB,EACrB,CAAC,EAED,MAAO,CAAE,UAAAI,EAAW,KAAAD,CAAK,CAC3B",
4
+ "sourcesContent": ["import useSWR from 'swr'\nimport { useMemberPopupContext } from '../../../context/provider'\n\nexport type ReferralRewardOverviewResponse = {\n data: {\n data: {\n available: number\n pending: number\n }\n }\n}\n\nexport function useReferralOverview(): {\n isLoading: boolean\n data?: ReferralRewardOverviewResponse\n} {\n const { profile, alpcConfig } = useMemberPopupContext()\n const isLogin = !!profile\n\n const swrKey = isLogin ? `/api/multipass/mktsrv/v1/referral/reward/overview/cash` : null\n\n const swrFetcher = async (url: string) => {\n const response = await fetch(url, {\n method: 'GET',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'current-language': alpcConfig.locale,\n },\n })\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`)\n }\n return response.json()\n }\n\n const { data, isLoading } = useSWR<ReferralRewardOverviewResponse>(swrKey, swrFetcher, {\n revalidateOnFocus: false,\n })\n\n return { isLoading, data }\n}\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmB,kBACnBC,EAAsC,qCAW/B,SAASH,GAGd,CACA,KAAM,CAAE,QAAAI,EAAS,WAAAC,CAAW,KAAI,yBAAsB,EAGhDC,EAFU,CAAC,CAACF,EAEO,yDAA2D,KAE9EG,EAAa,MAAOC,GAAgB,CACxC,MAAMC,EAAW,MAAM,MAAMD,EAAK,CAChC,OAAQ,MACR,YAAa,UACb,QAAS,CACP,eAAgB,mBAChB,mBAAoBH,EAAW,MACjC,CACF,CAAC,EACD,GAAI,CAACI,EAAS,GACZ,MAAM,IAAI,MAAM,uBAAuBA,EAAS,MAAM,EAAE,EAE1D,OAAOA,EAAS,KAAK,CACvB,EAEM,CAAE,KAAAC,EAAM,UAAAC,CAAU,KAAI,EAAAC,SAAuCN,EAAQC,EAAY,CACrF,kBAAmB,EACrB,CAAC,EAED,MAAO,CAAE,UAAAI,EAAW,KAAAD,CAAK,CAC3B",
6
6
  "names": ["useReferralOverview_exports", "__export", "useReferralOverview", "__toCommonJS", "import_swr", "import_provider", "profile", "alpcConfig", "swrKey", "swrFetcher", "url", "response", "data", "isLoading", "useSWR"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import D from"js-cookie";import{useCallback as E,useRef as m,useState as O}from"react";import F from"swr";import{useHeadlessContext as B}from"@anker-in/lib";import{getAlpcPath as A}from"../utils";import{useCreditsContext as w}from"../provider";let b;const U=t=>t&&(t.data&&typeof t.data=="object"&&!Array.isArray(t.data)&&"data"in t.data?t.data:t),M=t=>fetch(A(t.locale,t.apiBaseUrl)+t.url,t.fetchOptions).then(async a=>{if(a.status<300){const n=await a.json();return U(n)}if(a.status===401&&t.onReAuth){b||(b=t.onReAuth());const n=await b;if(b=void 0,n)return fetch(A(t.locale,t.apiBaseUrl)+t.url,t.fetchOptions).then(async r=>{if(r.status<300){const e=await r.json();return U(e)}if(r.status===401){t.onUnAuth&&t.onUnAuth();return}});t.onUnAuth&&t.onUnAuth();return}}),S=async(t,a,n,r)=>{let e=await fetch(`${A(t,r)}/cloud/login`,{method:"POST"}),s=await e.json(),o=U(s);if(e.status<300&&!a&&o?.code===27004){const i=D.get("alpcEU");if(Number(i)===1?D.set("alpcEU","0",{expires:30,domain:`.${n}.com`}):D.set("alpcEU","1",{expires:30,domain:`.${n}.com`}),e=await fetch(`${A(t,r)}/cloud/login`,{method:"POST"}),s=await e.json(),o=U(s),e.status>300)return!1}return!o?.code},q=(t,a,n={},r)=>{const e=m(!1),[s,o]=O(),[i,f]=O(!1),c=m(t),l=m(a),d=m(n),h=E(async(g,T={})=>{if(console.log("[useAlpcMutation] trigger called with:",{url:c.current,fetchData:g,brand:r.current}),e.current){console.log("[useAlpcMutation] already mutating, skipping");return}if(!r.current){console.log("[useAlpcMutation] brand not available, skipping request");return}e.current=!0,f(!0);const y={...d.current,...T},{onSuccess:R,onError:p}=y||{};try{const u=await l.current(c.current,{arg:g});return o(u),f(!1),e.current=!1,R&&R(u),u}catch(u){f(!1),e.current=!1,p&&p(u)}},[]);return{isMutating:i,trigger:h,data:s}},z=(t,a)=>{const[n,r]=O(!1),{removeProfile:e,alpcBrand:s,apiBaseUrl:o}=w(),{enable:i,...f}=a||{},{locale:c="",brand:l}=B(),d=s||l,{queryKey:h=[],body:g={},headers:T,...y}=t,R=i??!0,[p,u]=h;return F([p,u],!R||!d?null:([C,P])=>M({url:C,locale:c,apiBaseUrl:o,fetchOptions:{method:"POST",headers:{"current-language":c,...T},body:JSON.stringify({...g,...P}),...y},onReAuth:async()=>await S(c,n,d,o)?(r(!0),!0):!1,onUnAuth(){e()}}),{revalidateOnFocus:!1,...f})},J=(t,a)=>{const[n,r]=O(!1),{removeProfile:e,alpcBrand:s,apiBaseUrl:o}=w(),{locale:i="",brand:f}=B(),c=s||f,l=m(c);l.current=c;const{url:d,initData:h,headers:g,...T}=t,y=m(h);return y.current=h,q(d,(p,u)=>l.current?M({url:p,locale:i,apiBaseUrl:o,fetchOptions:{method:"POST",headers:{"current-language":i,...g},...T,body:JSON.stringify({...y.current,...u.arg})},onReAuth:async()=>await S(i,n,l.current,o)?(r(!0),!0):!1,onUnAuth(){e()}}):Promise.resolve(void 0),a,l)};export{z as useAlpcFetch,J as useAlpcMutation};
1
+ import D from"js-cookie";import{useCallback as E,useRef as m,useState as O}from"react";import F from"swr";import{useHeadlessContext as B}from"@anker-in/lib";import{getAlpcPath as A}from"../utils";import{useCreditsContext as w}from"../provider";let b;const U=t=>t&&(t.data&&typeof t.data=="object"&&!Array.isArray(t.data)&&"data"in t.data?t.data:t),M=t=>fetch(A(t.locale,t.apiBaseUrl)+t.url,{credentials:"include",...t.fetchOptions}).then(async a=>{if(a.status<300){const n=await a.json();return U(n)}if(a.status===401&&t.onReAuth){b||(b=t.onReAuth());const n=await b;if(b=void 0,n)return fetch(A(t.locale,t.apiBaseUrl)+t.url,{credentials:"include",...t.fetchOptions}).then(async r=>{if(r.status<300){const e=await r.json();return U(e)}if(r.status===401){t.onUnAuth&&t.onUnAuth();return}});t.onUnAuth&&t.onUnAuth();return}}),S=async(t,a,n,r)=>{let e=await fetch(`${A(t,r)}/cloud/login`,{method:"POST"}),s=await e.json(),o=U(s);if(e.status<300&&!a&&o?.code===27004){const i=D.get("alpcEU");if(Number(i)===1?D.set("alpcEU","0",{expires:30,domain:`.${n}.com`}):D.set("alpcEU","1",{expires:30,domain:`.${n}.com`}),e=await fetch(`${A(t,r)}/cloud/login`,{method:"POST"}),s=await e.json(),o=U(s),e.status>300)return!1}return!o?.code},q=(t,a,n={},r)=>{const e=m(!1),[s,o]=O(),[i,f]=O(!1),c=m(t),l=m(a),d=m(n),h=E(async(g,T={})=>{if(console.log("[useAlpcMutation] trigger called with:",{url:c.current,fetchData:g,brand:r.current}),e.current){console.log("[useAlpcMutation] already mutating, skipping");return}if(!r.current){console.log("[useAlpcMutation] brand not available, skipping request");return}e.current=!0,f(!0);const y={...d.current,...T},{onSuccess:R,onError:p}=y||{};try{const u=await l.current(c.current,{arg:g});return o(u),f(!1),e.current=!1,R&&R(u),u}catch(u){f(!1),e.current=!1,p&&p(u)}},[]);return{isMutating:i,trigger:h,data:s}},z=(t,a)=>{const[n,r]=O(!1),{removeProfile:e,alpcBrand:s,apiBaseUrl:o}=w(),{enable:i,...f}=a||{},{locale:c="",brand:l}=B(),d=s||l,{queryKey:h=[],body:g={},headers:T,...y}=t,R=i??!0,[p,u]=h;return F([p,u],!R||!d?null:([C,P])=>M({url:C,locale:c,apiBaseUrl:o,fetchOptions:{method:"POST",headers:{"current-language":c,...T},body:JSON.stringify({...g,...P}),...y},onReAuth:async()=>await S(c,n,d,o)?(r(!0),!0):!1,onUnAuth(){e()}}),{revalidateOnFocus:!1,...f})},J=(t,a)=>{const[n,r]=O(!1),{removeProfile:e,alpcBrand:s,apiBaseUrl:o}=w(),{locale:i="",brand:f}=B(),c=s||f,l=m(c);l.current=c;const{url:d,initData:h,headers:g,...T}=t,y=m(h);return y.current=h,q(d,(p,u)=>l.current?M({url:p,locale:i,apiBaseUrl:o,fetchOptions:{method:"POST",headers:{"current-language":i,...g},...T,body:JSON.stringify({...y.current,...u.arg})},onReAuth:async()=>await S(i,n,l.current,o)?(r(!0),!0):!1,onUnAuth(){e()}}):Promise.resolve(void 0),a,l)};export{z as useAlpcFetch,J as useAlpcMutation};
2
2
  //# sourceMappingURL=useAlpcFetch.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/credits/context/hooks/useAlpcFetch.ts"],
4
- "sourcesContent": ["import Cookies from 'js-cookie'\nimport { useCallback, useRef, useState } from 'react'\nimport useSWR, { type SWRConfiguration } from 'swr'\nimport { useHeadlessContext } from '@anker-in/lib'\n\nimport { getAlpcPath } from '../utils'\nimport { useCreditsContext } from '../provider'\n\ninterface UseAlpcFetchOptionsSwrOptions<TData, Error> extends SWRConfiguration<TData, Error> {\n enable?: boolean\n}\n\ninterface FetchOptions extends RequestInit {\n queryKey: [string, Record<string, any>]\n data?: Record<string, any>\n}\n\ninterface MutationOptions extends RequestInit {\n url: string\n initData: Record<string, any>\n}\n\ninterface FetcherOptions {\n url: string\n locale: string\n fetchOptions: RequestInit\n onReAuth: () => Promise<boolean>\n onUnAuth: () => void\n apiBaseUrl?: string\n}\n\nlet reAuthPromise: Promise<boolean> | undefined\n\ntype Fetcher<TData, TBody> = (url: string, data: { arg: TBody }) => Promise<TData>\n\n/**\n * \u7EDF\u4E00\u5904\u7406 ALPC \u63A5\u53E3\u8FD4\u56DE\u7684\u6570\u636E\u7ED3\u6784\n * \u517C\u5BB9\u4E00\u5C42 data \u548C\u4E24\u5C42 data \u7684\u573A\u666F\uFF1A\n * - \u4E24\u5C42 data: {data: {data: ..., code: 27004}} \u2192 \u5265\u6389\u5916\u5C42\uFF0C\u8FD4\u56DE\u5185\u5C42 {data: ..., code: 27004}\n * - \u4E00\u5C42 data: {data: ..., code: 27004} \u2192 \u76F4\u63A5\u8FD4\u56DE\uFF0C\u4E0D\u505A\u5904\u7406\n *\n * \u5224\u65AD\u4E24\u5C42\u7684\u4F9D\u636E\uFF1AresponseData.data.data \u5B58\u5728\uFF08\u5916\u5C42 data \u5185\u90E8\u8FD8\u6709\u4E00\u5C42 data\uFF09\n */\nconst normalizeResponseData = (responseData: any) => {\n if (!responseData) return responseData\n\n // \u4E24\u5C42\u7ED3\u6784\uFF1AresponseData.data \u662F\u5BF9\u8C61\uFF0C\u4E14\u5176\u5185\u90E8\u8FD8\u6709 data \u5B57\u6BB5\n if (\n responseData.data &&\n typeof responseData.data === 'object' &&\n !Array.isArray(responseData.data) &&\n 'data' in responseData.data\n ) {\n return responseData.data\n }\n\n // \u4E00\u5C42\u7ED3\u6784\uFF0C\u76F4\u63A5\u8FD4\u56DE\n return responseData\n}\n\nconst fetcher = (options: FetcherOptions) => {\n return fetch(getAlpcPath(options.locale, options.apiBaseUrl) + options.url, options.fetchOptions).then(async response => {\n if (response.status < 300) {\n const responseData = await response.json()\n return normalizeResponseData(responseData)\n }\n\n // \u9519\u8BEF\u5904\u7406\n if (response.status === 401) {\n // \u91CD\u65B0\u767B\u5F55\u5C1D\u8BD5\n if (options.onReAuth) {\n if (!reAuthPromise) {\n reAuthPromise = options.onReAuth()\n }\n\n const result = await reAuthPromise\n\n reAuthPromise = undefined\n\n if (result) {\n // \u8DE8\u533A\u91CD\u65B0\u767B\u5F55\u540E\u9700\u8981\u66FF\u6362\u533A\u57DF\u6807\u5FD7\uFF0C\u6240\u4EE5\u4E0D\u80FD\u7528\u6700\u5F00\u59CB\u8BF7\u6C42\u7684\u90A3\u4E2A\u94FE\u63A5\n return fetch(getAlpcPath(options.locale, options.apiBaseUrl) + options.url, options.fetchOptions).then(async response => {\n if (response.status < 300) {\n const responseData = await response.json()\n return normalizeResponseData(responseData)\n }\n\n if (response.status === 401) {\n if (options.onUnAuth) {\n options.onUnAuth()\n }\n return\n }\n })\n } else {\n if (options.onUnAuth) {\n options.onUnAuth()\n }\n return\n }\n }\n }\n })\n}\n\nconst reAuth = async (locale: string, retry: boolean, brand: string, apiBaseUrl?: string) => {\n let reloginResponse = await fetch(`${getAlpcPath(locale, apiBaseUrl)}/cloud/login`, {\n method: 'POST',\n })\n let reloginResponseData = await reloginResponse.json()\n // \u517C\u5BB9\u4E24\u5C42 data \u7ED3\u6784\n let normalizedData = normalizeResponseData(reloginResponseData)\n\n if (reloginResponse!.status < 300 && !retry) {\n if (normalizedData?.code === 27004) {\n // \u8DE8\u533A\u767B\u5F55\u9519\u8BEF\n const alpcEUCookie = Cookies.get('alpcEU')\n\n if (Number(alpcEUCookie) === 1) {\n Cookies.set('alpcEU', '0', {\n expires: 30,\n domain: `.${brand}.com`,\n })\n } else {\n Cookies.set('alpcEU', '1', {\n expires: 30,\n domain: `.${brand}.com`,\n })\n }\n\n // \u91CD\u65B0\u5C1D\u8BD5\u6362\u533A\u767B\u5F55\n reloginResponse = await fetch(`${getAlpcPath(locale, apiBaseUrl)}/cloud/login`, {\n method: 'POST',\n })\n reloginResponseData = await reloginResponse.json()\n normalizedData = normalizeResponseData(reloginResponseData)\n\n if (reloginResponse.status > 300) {\n return false\n }\n }\n }\n if (!normalizedData?.code) {\n // \u91CD\u65B0\u767B\u5F55\u6210\u529F\n return true\n }\n\n return false\n}\n\nexport interface UseMutationConfig<TData> {\n onSuccess?: (response: TData) => any\n onError?: (error: Error) => any\n}\n\nconst useMutation = <TData, TBody>(\n url: string,\n fetcher: Fetcher<TData, TBody>,\n mutationConfig: UseMutationConfig<TData> = {},\n brandRef: React.MutableRefObject<string | undefined>\n) => {\n const innerMutating = useRef<boolean>(false)\n\n const [data, setData] = useState<TData>()\n const [isMutating, setIsMutating] = useState(false)\n\n const urlRef = useRef(url)\n const fetcherRef = useRef(fetcher)\n const configRef = useRef(mutationConfig)\n\n const trigger = useCallback(\n async (fetchData: TBody, opts: UseMutationConfig<TData> = {}) => {\n console.log('[useAlpcMutation] trigger called with:', { url: urlRef.current, fetchData, brand: brandRef.current })\n\n if (innerMutating.current) {\n console.log('[useAlpcMutation] already mutating, skipping')\n return\n }\n\n if (!brandRef.current) {\n console.log('[useAlpcMutation] brand not available, skipping request')\n return\n }\n\n innerMutating.current = true\n setIsMutating(true)\n\n const config = {\n ...configRef.current,\n ...opts,\n }\n\n const { onSuccess, onError } = config || {}\n\n try {\n const fetchResult = await fetcherRef.current(urlRef.current, {\n arg: fetchData,\n })\n setData(fetchResult)\n\n setIsMutating(false)\n innerMutating.current = false\n\n if (onSuccess) {\n onSuccess(fetchResult)\n }\n return fetchResult\n } catch (err: any) {\n setIsMutating(false)\n innerMutating.current = false\n\n if (onError) {\n onError(err)\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n )\n\n return {\n isMutating,\n trigger,\n data,\n }\n}\n\nexport const useAlpcFetch = <TData>(\n options: FetchOptions,\n swrOptions?: UseAlpcFetchOptionsSwrOptions<TData, Error>\n) => {\n const [retry, setRetry] = useState(false)\n const { removeProfile, alpcBrand, apiBaseUrl } = useCreditsContext()\n\n const { enable, ...otherSwrOptions } = swrOptions || {}\n\n const { locale = '', brand: headlessBrand } = useHeadlessContext()\n // \u4F18\u5148\u4F7F\u7528 creditsContext \u4E2D\u7684 alpcBrand\uFF0C\u5982\u679C\u6CA1\u6709\u5219\u4F7F\u7528 headlessConfig \u4E2D\u7684 brand\n const brand = alpcBrand || headlessBrand\n\n const { queryKey = [], body: fetchBody = {}, headers, ...fetchOptions } = options\n const fetchEnable = enable ?? true\n\n const [url, requestBody] = queryKey\n\n const context = useSWR<TData>(\n [url, requestBody],\n !fetchEnable || !brand\n ? null\n : ([requestUrl, data]: [string, Record<string, any>]) =>\n fetcher({\n url: requestUrl,\n locale,\n apiBaseUrl,\n fetchOptions: {\n method: 'POST',\n headers: {\n 'current-language': locale,\n ...headers,\n },\n body: JSON.stringify({\n ...fetchBody,\n ...data,\n }),\n ...fetchOptions,\n },\n onReAuth: async () => {\n const result = await reAuth(locale, retry, brand, apiBaseUrl)\n\n if (result) {\n setRetry(true)\n return true\n }\n\n return false\n },\n onUnAuth() {\n // \u5931\u8D25\u540E\u9000\u51FA\u767B\u5F55\n removeProfile()\n },\n }),\n {\n revalidateOnFocus: false,\n ...otherSwrOptions,\n }\n )\n\n return context\n}\n\nexport const useAlpcMutation = <TData, TBody>(options: MutationOptions, mutationOptions?: UseMutationConfig<TData>) => {\n const [retry, setRetry] = useState(false)\n const { removeProfile, alpcBrand, apiBaseUrl } = useCreditsContext()\n\n const { locale = '', brand: headlessBrand } = useHeadlessContext()\n // \u4F18\u5148\u4F7F\u7528 creditsContext \u4E2D\u7684 alpcBrand\uFF0C\u5982\u679C\u6CA1\u6709\u5219\u4F7F\u7528 headlessConfig \u4E2D\u7684 brand\n const brand = alpcBrand || headlessBrand\n const brandRef = useRef(brand)\n brandRef.current = brand\n\n const { url, initData, headers, ...fetchOptions } = options\n const initDataRef = useRef(initData)\n initDataRef.current = initData\n\n const context = useMutation<TData, TBody>(\n url,\n (requestUrl, data: { arg: TBody }) => {\n // Prevent requests when brand is not available\n if (!brandRef.current) {\n return Promise.resolve(undefined as unknown as TData)\n }\n\n return fetcher({\n url: requestUrl,\n locale,\n apiBaseUrl,\n fetchOptions: {\n method: 'POST',\n headers: {\n 'current-language': locale,\n ...headers,\n },\n ...fetchOptions,\n body: JSON.stringify({\n ...initDataRef.current,\n ...data.arg,\n }),\n },\n onReAuth: async () => {\n const result = await reAuth(locale, retry, brandRef.current!, apiBaseUrl)\n\n if (result) {\n setRetry(true)\n return true\n }\n\n return false\n },\n onUnAuth() {\n // \u5931\u8D25\u540E\u9000\u51FA\u767B\u5F55\n removeProfile()\n },\n })\n },\n mutationOptions,\n brandRef\n )\n\n return context\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import Cookies from 'js-cookie'\nimport { useCallback, useRef, useState } from 'react'\nimport useSWR, { type SWRConfiguration } from 'swr'\nimport { useHeadlessContext } from '@anker-in/lib'\n\nimport { getAlpcPath } from '../utils'\nimport { useCreditsContext } from '../provider'\n\ninterface UseAlpcFetchOptionsSwrOptions<TData, Error> extends SWRConfiguration<TData, Error> {\n enable?: boolean\n}\n\ninterface FetchOptions extends RequestInit {\n queryKey: [string, Record<string, any>]\n data?: Record<string, any>\n}\n\ninterface MutationOptions extends RequestInit {\n url: string\n initData: Record<string, any>\n}\n\ninterface FetcherOptions {\n url: string\n locale: string\n fetchOptions: RequestInit\n onReAuth: () => Promise<boolean>\n onUnAuth: () => void\n apiBaseUrl?: string\n}\n\nlet reAuthPromise: Promise<boolean> | undefined\n\ntype Fetcher<TData, TBody> = (url: string, data: { arg: TBody }) => Promise<TData>\n\n/**\n * \u7EDF\u4E00\u5904\u7406 ALPC \u63A5\u53E3\u8FD4\u56DE\u7684\u6570\u636E\u7ED3\u6784\n * \u517C\u5BB9\u4E00\u5C42 data \u548C\u4E24\u5C42 data \u7684\u573A\u666F\uFF1A\n * - \u4E24\u5C42 data: {data: {data: ..., code: 27004}} \u2192 \u5265\u6389\u5916\u5C42\uFF0C\u8FD4\u56DE\u5185\u5C42 {data: ..., code: 27004}\n * - \u4E00\u5C42 data: {data: ..., code: 27004} \u2192 \u76F4\u63A5\u8FD4\u56DE\uFF0C\u4E0D\u505A\u5904\u7406\n *\n * \u5224\u65AD\u4E24\u5C42\u7684\u4F9D\u636E\uFF1AresponseData.data.data \u5B58\u5728\uFF08\u5916\u5C42 data \u5185\u90E8\u8FD8\u6709\u4E00\u5C42 data\uFF09\n */\nconst normalizeResponseData = (responseData: any) => {\n if (!responseData) return responseData\n\n // \u4E24\u5C42\u7ED3\u6784\uFF1AresponseData.data \u662F\u5BF9\u8C61\uFF0C\u4E14\u5176\u5185\u90E8\u8FD8\u6709 data \u5B57\u6BB5\n if (\n responseData.data &&\n typeof responseData.data === 'object' &&\n !Array.isArray(responseData.data) &&\n 'data' in responseData.data\n ) {\n return responseData.data\n }\n\n // \u4E00\u5C42\u7ED3\u6784\uFF0C\u76F4\u63A5\u8FD4\u56DE\n return responseData\n}\n\nconst fetcher = (options: FetcherOptions) => {\n return fetch(getAlpcPath(options.locale, options.apiBaseUrl) + options.url, { credentials: 'include', ...options.fetchOptions }).then(async response => {\n if (response.status < 300) {\n const responseData = await response.json()\n return normalizeResponseData(responseData)\n }\n\n // \u9519\u8BEF\u5904\u7406\n if (response.status === 401) {\n // \u91CD\u65B0\u767B\u5F55\u5C1D\u8BD5\n if (options.onReAuth) {\n if (!reAuthPromise) {\n reAuthPromise = options.onReAuth()\n }\n\n const result = await reAuthPromise\n\n reAuthPromise = undefined\n\n if (result) {\n // \u8DE8\u533A\u91CD\u65B0\u767B\u5F55\u540E\u9700\u8981\u66FF\u6362\u533A\u57DF\u6807\u5FD7\uFF0C\u6240\u4EE5\u4E0D\u80FD\u7528\u6700\u5F00\u59CB\u8BF7\u6C42\u7684\u90A3\u4E2A\u94FE\u63A5\n return fetch(getAlpcPath(options.locale, options.apiBaseUrl) + options.url, { credentials: 'include', ...options.fetchOptions }).then(async response => {\n if (response.status < 300) {\n const responseData = await response.json()\n return normalizeResponseData(responseData)\n }\n\n if (response.status === 401) {\n if (options.onUnAuth) {\n options.onUnAuth()\n }\n return\n }\n })\n } else {\n if (options.onUnAuth) {\n options.onUnAuth()\n }\n return\n }\n }\n }\n })\n}\n\nconst reAuth = async (locale: string, retry: boolean, brand: string, apiBaseUrl?: string) => {\n let reloginResponse = await fetch(`${getAlpcPath(locale, apiBaseUrl)}/cloud/login`, {\n method: 'POST',\n })\n let reloginResponseData = await reloginResponse.json()\n // \u517C\u5BB9\u4E24\u5C42 data \u7ED3\u6784\n let normalizedData = normalizeResponseData(reloginResponseData)\n\n if (reloginResponse!.status < 300 && !retry) {\n if (normalizedData?.code === 27004) {\n // \u8DE8\u533A\u767B\u5F55\u9519\u8BEF\n const alpcEUCookie = Cookies.get('alpcEU')\n\n if (Number(alpcEUCookie) === 1) {\n Cookies.set('alpcEU', '0', {\n expires: 30,\n domain: `.${brand}.com`,\n })\n } else {\n Cookies.set('alpcEU', '1', {\n expires: 30,\n domain: `.${brand}.com`,\n })\n }\n\n // \u91CD\u65B0\u5C1D\u8BD5\u6362\u533A\u767B\u5F55\n reloginResponse = await fetch(`${getAlpcPath(locale, apiBaseUrl)}/cloud/login`, {\n method: 'POST',\n })\n reloginResponseData = await reloginResponse.json()\n normalizedData = normalizeResponseData(reloginResponseData)\n\n if (reloginResponse.status > 300) {\n return false\n }\n }\n }\n if (!normalizedData?.code) {\n // \u91CD\u65B0\u767B\u5F55\u6210\u529F\n return true\n }\n\n return false\n}\n\nexport interface UseMutationConfig<TData> {\n onSuccess?: (response: TData) => any\n onError?: (error: Error) => any\n}\n\nconst useMutation = <TData, TBody>(\n url: string,\n fetcher: Fetcher<TData, TBody>,\n mutationConfig: UseMutationConfig<TData> = {},\n brandRef: React.MutableRefObject<string | undefined>\n) => {\n const innerMutating = useRef<boolean>(false)\n\n const [data, setData] = useState<TData>()\n const [isMutating, setIsMutating] = useState(false)\n\n const urlRef = useRef(url)\n const fetcherRef = useRef(fetcher)\n const configRef = useRef(mutationConfig)\n\n const trigger = useCallback(\n async (fetchData: TBody, opts: UseMutationConfig<TData> = {}) => {\n console.log('[useAlpcMutation] trigger called with:', { url: urlRef.current, fetchData, brand: brandRef.current })\n\n if (innerMutating.current) {\n console.log('[useAlpcMutation] already mutating, skipping')\n return\n }\n\n if (!brandRef.current) {\n console.log('[useAlpcMutation] brand not available, skipping request')\n return\n }\n\n innerMutating.current = true\n setIsMutating(true)\n\n const config = {\n ...configRef.current,\n ...opts,\n }\n\n const { onSuccess, onError } = config || {}\n\n try {\n const fetchResult = await fetcherRef.current(urlRef.current, {\n arg: fetchData,\n })\n setData(fetchResult)\n\n setIsMutating(false)\n innerMutating.current = false\n\n if (onSuccess) {\n onSuccess(fetchResult)\n }\n return fetchResult\n } catch (err: any) {\n setIsMutating(false)\n innerMutating.current = false\n\n if (onError) {\n onError(err)\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n )\n\n return {\n isMutating,\n trigger,\n data,\n }\n}\n\nexport const useAlpcFetch = <TData>(\n options: FetchOptions,\n swrOptions?: UseAlpcFetchOptionsSwrOptions<TData, Error>\n) => {\n const [retry, setRetry] = useState(false)\n const { removeProfile, alpcBrand, apiBaseUrl } = useCreditsContext()\n\n const { enable, ...otherSwrOptions } = swrOptions || {}\n\n const { locale = '', brand: headlessBrand } = useHeadlessContext()\n // \u4F18\u5148\u4F7F\u7528 creditsContext \u4E2D\u7684 alpcBrand\uFF0C\u5982\u679C\u6CA1\u6709\u5219\u4F7F\u7528 headlessConfig \u4E2D\u7684 brand\n const brand = alpcBrand || headlessBrand\n\n const { queryKey = [], body: fetchBody = {}, headers, ...fetchOptions } = options\n const fetchEnable = enable ?? true\n\n const [url, requestBody] = queryKey\n\n const context = useSWR<TData>(\n [url, requestBody],\n !fetchEnable || !brand\n ? null\n : ([requestUrl, data]: [string, Record<string, any>]) =>\n fetcher({\n url: requestUrl,\n locale,\n apiBaseUrl,\n fetchOptions: {\n method: 'POST',\n headers: {\n 'current-language': locale,\n ...headers,\n },\n body: JSON.stringify({\n ...fetchBody,\n ...data,\n }),\n ...fetchOptions,\n },\n onReAuth: async () => {\n const result = await reAuth(locale, retry, brand, apiBaseUrl)\n\n if (result) {\n setRetry(true)\n return true\n }\n\n return false\n },\n onUnAuth() {\n // \u5931\u8D25\u540E\u9000\u51FA\u767B\u5F55\n removeProfile()\n },\n }),\n {\n revalidateOnFocus: false,\n ...otherSwrOptions,\n }\n )\n\n return context\n}\n\nexport const useAlpcMutation = <TData, TBody>(options: MutationOptions, mutationOptions?: UseMutationConfig<TData>) => {\n const [retry, setRetry] = useState(false)\n const { removeProfile, alpcBrand, apiBaseUrl } = useCreditsContext()\n\n const { locale = '', brand: headlessBrand } = useHeadlessContext()\n // \u4F18\u5148\u4F7F\u7528 creditsContext \u4E2D\u7684 alpcBrand\uFF0C\u5982\u679C\u6CA1\u6709\u5219\u4F7F\u7528 headlessConfig \u4E2D\u7684 brand\n const brand = alpcBrand || headlessBrand\n const brandRef = useRef(brand)\n brandRef.current = brand\n\n const { url, initData, headers, ...fetchOptions } = options\n const initDataRef = useRef(initData)\n initDataRef.current = initData\n\n const context = useMutation<TData, TBody>(\n url,\n (requestUrl, data: { arg: TBody }) => {\n // Prevent requests when brand is not available\n if (!brandRef.current) {\n return Promise.resolve(undefined as unknown as TData)\n }\n\n return fetcher({\n url: requestUrl,\n locale,\n apiBaseUrl,\n fetchOptions: {\n method: 'POST',\n headers: {\n 'current-language': locale,\n ...headers,\n },\n ...fetchOptions,\n body: JSON.stringify({\n ...initDataRef.current,\n ...data.arg,\n }),\n },\n onReAuth: async () => {\n const result = await reAuth(locale, retry, brandRef.current!, apiBaseUrl)\n\n if (result) {\n setRetry(true)\n return true\n }\n\n return false\n },\n onUnAuth() {\n // \u5931\u8D25\u540E\u9000\u51FA\u767B\u5F55\n removeProfile()\n },\n })\n },\n mutationOptions,\n brandRef\n )\n\n return context\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["Cookies", "useCallback", "useRef", "useState", "useSWR", "useHeadlessContext", "getAlpcPath", "useCreditsContext", "reAuthPromise", "normalizeResponseData", "responseData", "fetcher", "options", "response", "result", "reAuth", "locale", "retry", "brand", "apiBaseUrl", "reloginResponse", "reloginResponseData", "normalizedData", "alpcEUCookie", "useMutation", "url", "mutationConfig", "brandRef", "innerMutating", "data", "setData", "isMutating", "setIsMutating", "urlRef", "fetcherRef", "configRef", "trigger", "fetchData", "opts", "config", "onSuccess", "onError", "fetchResult", "err", "useAlpcFetch", "swrOptions", "setRetry", "removeProfile", "alpcBrand", "enable", "otherSwrOptions", "headlessBrand", "queryKey", "fetchBody", "headers", "fetchOptions", "fetchEnable", "requestBody", "requestUrl", "useAlpcMutation", "mutationOptions", "initData", "initDataRef"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{useEffect as p,useState as r}from"react";import{useHeadlessContext as f}from"@anker-in/lib";function l({shopifyStoreDomain:h}){const{locale:t=""}=f(),[i,o]=r(!1),[a,s]=r([]);return p(()=>{(async()=>{o(!0);try{let e=(await(await fetch("/api/multipass/account/countries",{headers:{"current-language":t}})).json())?.data?.data||[];e=e.sort((c,u)=>c.name.localeCompare(u.name)),console.log("fetch shipsToCountries",e),s(e)}catch(n){s([]),console.error(n)}finally{o(!1)}})()},[t]),{isLoading:i,countries:a}}var S=l;export{S as default};
1
+ import{useEffect as p,useState as r}from"react";import{useHeadlessContext as l}from"@anker-in/lib";function f({shopifyStoreDomain:h}){const{locale:t=""}=l(),[i,o]=r(!1),[a,s]=r([]);return p(()=>{(async()=>{o(!0);try{let e=(await(await fetch("/api/multipass/account/countries",{credentials:"include",headers:{"current-language":t}})).json())?.data?.data||[];e=e.sort((c,u)=>c.name.localeCompare(u.name)),console.log("fetch shipsToCountries",e),s(e)}catch(n){s([]),console.error(n)}finally{o(!1)}})()},[t]),{isLoading:i,countries:a}}var S=f;export{S as default};
2
2
  //# sourceMappingURL=useCountries.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/credits/context/hooks/useCountries.ts"],
4
- "sourcesContent": ["import { useEffect, useState } from 'react'\n\nimport { useHeadlessContext } from '@anker-in/lib'\nimport { type ShippingCountry } from '../../type'\n\nfunction useCountries({ shopifyStoreDomain }: { shopifyStoreDomain: string }) {\n const { locale = '' } = useHeadlessContext()\n\n const [isLoading, setLoading] = useState(false)\n const [countries, setCountries] = useState<ShippingCountry[]>([])\n\n useEffect(() => {\n const fetchCountries = async () => {\n setLoading(true)\n try {\n const response = await fetch('/api/multipass/account/countries', {\n headers: {\n 'current-language': locale,\n },\n })\n const res: any = await response.json()\n\n let shipsToCountries: ShippingCountry[] = res?.data?.data || []\n\n // \u5B57\u6BCD\u987A\u5E8F\u6392\u5E8F\n shipsToCountries = shipsToCountries.sort((a, b) => {\n return a.name.localeCompare(b.name)\n })\n\n console.log('fetch shipsToCountries', shipsToCountries)\n setCountries(shipsToCountries)\n } catch (e) {\n setCountries([])\n console.error(e)\n } finally {\n setLoading(false)\n }\n }\n\n fetchCountries()\n }, [locale])\n\n return {\n isLoading,\n countries,\n }\n}\n\nexport default useCountries\n"],
5
- "mappings": "AAAA,OAAS,aAAAA,EAAW,YAAAC,MAAgB,QAEpC,OAAS,sBAAAC,MAA0B,gBAGnC,SAASC,EAAa,CAAE,mBAAAC,CAAmB,EAAmC,CAC5E,KAAM,CAAE,OAAAC,EAAS,EAAG,EAAIH,EAAmB,EAErC,CAACI,EAAWC,CAAU,EAAIN,EAAS,EAAK,EACxC,CAACO,EAAWC,CAAY,EAAIR,EAA4B,CAAC,CAAC,EAEhE,OAAAD,EAAU,IAAM,EACS,SAAY,CACjCO,EAAW,EAAI,EACf,GAAI,CAQF,IAAIG,GAFa,MALA,MAAM,MAAM,mCAAoC,CAC/D,QAAS,CACP,mBAAoBL,CACtB,CACF,CAAC,GAC+B,KAAK,IAEU,MAAM,MAAQ,CAAC,EAG9DK,EAAmBA,EAAiB,KAAK,CAACC,EAAGC,IACpCD,EAAE,KAAK,cAAcC,EAAE,IAAI,CACnC,EAED,QAAQ,IAAI,yBAA0BF,CAAgB,EACtDD,EAAaC,CAAgB,CAC/B,OAASG,EAAG,CACVJ,EAAa,CAAC,CAAC,EACf,QAAQ,MAAMI,CAAC,CACjB,QAAE,CACAN,EAAW,EAAK,CAClB,CACF,GAEe,CACjB,EAAG,CAACF,CAAM,CAAC,EAEJ,CACL,UAAAC,EACA,UAAAE,CACF,CACF,CAEA,IAAOM,EAAQX",
4
+ "sourcesContent": ["import { useEffect, useState } from 'react'\n\nimport { useHeadlessContext } from '@anker-in/lib'\nimport { type ShippingCountry } from '../../type'\n\nfunction useCountries({ shopifyStoreDomain }: { shopifyStoreDomain: string }) {\n const { locale = '' } = useHeadlessContext()\n\n const [isLoading, setLoading] = useState(false)\n const [countries, setCountries] = useState<ShippingCountry[]>([])\n\n useEffect(() => {\n const fetchCountries = async () => {\n setLoading(true)\n try {\n const response = await fetch('/api/multipass/account/countries', {\n credentials: 'include',\n headers: {\n 'current-language': locale,\n },\n })\n const res: any = await response.json()\n\n let shipsToCountries: ShippingCountry[] = res?.data?.data || []\n\n // \u5B57\u6BCD\u987A\u5E8F\u6392\u5E8F\n shipsToCountries = shipsToCountries.sort((a, b) => {\n return a.name.localeCompare(b.name)\n })\n\n console.log('fetch shipsToCountries', shipsToCountries)\n setCountries(shipsToCountries)\n } catch (e) {\n setCountries([])\n console.error(e)\n } finally {\n setLoading(false)\n }\n }\n\n fetchCountries()\n }, [locale])\n\n return {\n isLoading,\n countries,\n }\n}\n\nexport default useCountries\n"],
5
+ "mappings": "AAAA,OAAS,aAAAA,EAAW,YAAAC,MAAgB,QAEpC,OAAS,sBAAAC,MAA0B,gBAGnC,SAASC,EAAa,CAAE,mBAAAC,CAAmB,EAAmC,CAC5E,KAAM,CAAE,OAAAC,EAAS,EAAG,EAAIH,EAAmB,EAErC,CAACI,EAAWC,CAAU,EAAIN,EAAS,EAAK,EACxC,CAACO,EAAWC,CAAY,EAAIR,EAA4B,CAAC,CAAC,EAEhE,OAAAD,EAAU,IAAM,EACS,SAAY,CACjCO,EAAW,EAAI,EACf,GAAI,CASF,IAAIG,GAFa,MANA,MAAM,MAAM,mCAAoC,CAC/D,YAAa,UACb,QAAS,CACP,mBAAoBL,CACtB,CACF,CAAC,GAC+B,KAAK,IAEU,MAAM,MAAQ,CAAC,EAG9DK,EAAmBA,EAAiB,KAAK,CAACC,EAAGC,IACpCD,EAAE,KAAK,cAAcC,EAAE,IAAI,CACnC,EAED,QAAQ,IAAI,yBAA0BF,CAAgB,EACtDD,EAAaC,CAAgB,CAC/B,OAASG,EAAG,CACVJ,EAAa,CAAC,CAAC,EACf,QAAQ,MAAMI,CAAC,CACjB,QAAE,CACAN,EAAW,EAAK,CAClB,CACF,GAEe,CACjB,EAAG,CAACF,CAAM,CAAC,EAEJ,CACL,UAAAC,EACA,UAAAE,CACF,CACF,CAEA,IAAOM,EAAQX",
6
6
  "names": ["useEffect", "useState", "useHeadlessContext", "useCountries", "shopifyStoreDomain", "locale", "isLoading", "setLoading", "countries", "setCountries", "shipsToCountries", "a", "b", "e", "useCountries_default"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{useEffect as l,useState as p}from"react";import{useHeadlessContext as d}from"@anker-in/lib";function g({shopifyStoreDomain:u}){const{locale:t=""}=d(),[h,n]=p(!1),[f,i]=p([]);return l(()=>{(async()=>{n(!0);try{const a=await(await fetch(`/api/multipass/rainbowbridge/uc/shop/shipping_zones?shop=${u}`,{headers:{"current-language":t}})).json();let e=[];const c=new Set;(a?.data?.data||a?.data||[]).forEach(s=>{s.countries.forEach(o=>{c.has(o.code)||(c.add(o.code),e.push(o))})}),e=e.sort((s,o)=>s.code.localeCompare(o.code)),console.log("fetch shipsToCountries",e),i(e)}catch(r){i([]),console.error(r)}finally{n(!1)}})()},[t]),{isLoading:h,countries:f}}var E=g;export{E as default};
1
+ import{useEffect as l,useState as p}from"react";import{useHeadlessContext as d}from"@anker-in/lib";function g({shopifyStoreDomain:u}){const{locale:t=""}=d(),[h,n]=p(!1),[f,i]=p([]);return l(()=>{(async()=>{n(!0);try{const a=await(await fetch(`/api/multipass/rainbowbridge/uc/shop/shipping_zones?shop=${u}`,{credentials:"include",headers:{"current-language":t}})).json();let e=[];const c=new Set;(a?.data?.data||a?.data||[]).forEach(s=>{s.countries.forEach(o=>{c.has(o.code)||(c.add(o.code),e.push(o))})}),e=e.sort((s,o)=>s.code.localeCompare(o.code)),console.log("fetch shipsToCountries",e),i(e)}catch(r){i([]),console.error(r)}finally{n(!1)}})()},[t]),{isLoading:h,countries:f}}var E=g;export{E as default};
2
2
  //# sourceMappingURL=useShippingCountries.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/credits/context/hooks/useShippingCountries.ts"],
4
- "sourcesContent": ["import { useEffect, useState } from 'react'\n\nimport { useHeadlessContext } from '@anker-in/lib'\nimport { type ShippingCountry, type ShippingZone } from '../../type'\n\nfunction useShippingCountries({ shopifyStoreDomain }: { shopifyStoreDomain: string }) {\n const { locale = '' } = useHeadlessContext()\n\n const [isLoading, setLoading] = useState(false)\n const [countries, setCountries] = useState<ShippingCountry[]>([])\n\n useEffect(() => {\n const fetchCountries = async () => {\n setLoading(true)\n try {\n const response = await fetch(`/api/multipass/rainbowbridge/uc/shop/shipping_zones?shop=${shopifyStoreDomain}`, {\n headers: {\n 'current-language': locale,\n },\n })\n const res: any = await response.json()\n\n // \u56FD\u5BB6\u8FC7\u6EE4\n let shipsToCountries: ShippingCountry[] = []\n const countrySet = new Set()\n const shippingZones = res?.data?.data || res?.data || []\n shippingZones.forEach((shippingZoneItem: ShippingZone) => {\n shippingZoneItem.countries.forEach(shippingZoneCountryItem => {\n if (!countrySet.has(shippingZoneCountryItem.code)) {\n countrySet.add(shippingZoneCountryItem.code)\n shipsToCountries.push(shippingZoneCountryItem)\n }\n })\n })\n\n // \u5B57\u6BCD\u987A\u5E8F\u6392\u5E8F\n shipsToCountries = shipsToCountries.sort((a, b) => {\n return a.code.localeCompare(b.code)\n })\n\n console.log('fetch shipsToCountries', shipsToCountries)\n setCountries(shipsToCountries)\n } catch (e) {\n setCountries([])\n console.error(e)\n } finally {\n setLoading(false)\n }\n }\n\n fetchCountries()\n }, [locale])\n\n return {\n isLoading,\n countries,\n }\n}\n\nexport default useShippingCountries\n"],
5
- "mappings": "AAAA,OAAS,aAAAA,EAAW,YAAAC,MAAgB,QAEpC,OAAS,sBAAAC,MAA0B,gBAGnC,SAASC,EAAqB,CAAE,mBAAAC,CAAmB,EAAmC,CACpF,KAAM,CAAE,OAAAC,EAAS,EAAG,EAAIH,EAAmB,EAErC,CAACI,EAAWC,CAAU,EAAIN,EAAS,EAAK,EACxC,CAACO,EAAWC,CAAY,EAAIR,EAA4B,CAAC,CAAC,EAEhE,OAAAD,EAAU,IAAM,EACS,SAAY,CACjCO,EAAW,EAAI,EACf,GAAI,CAMF,MAAMG,EAAW,MALA,MAAM,MAAM,4DAA4DN,CAAkB,GAAI,CAC7G,QAAS,CACP,mBAAoBC,CACtB,CACF,CAAC,GAC+B,KAAK,EAGrC,IAAIM,EAAsC,CAAC,EAC3C,MAAMC,EAAa,IAAI,KACDF,GAAK,MAAM,MAAQA,GAAK,MAAQ,CAAC,GACzC,QAASG,GAAmC,CACxDA,EAAiB,UAAU,QAAQC,GAA2B,CACvDF,EAAW,IAAIE,EAAwB,IAAI,IAC9CF,EAAW,IAAIE,EAAwB,IAAI,EAC3CH,EAAiB,KAAKG,CAAuB,EAEjD,CAAC,CACH,CAAC,EAGDH,EAAmBA,EAAiB,KAAK,CAACI,EAAGC,IACpCD,EAAE,KAAK,cAAcC,EAAE,IAAI,CACnC,EAED,QAAQ,IAAI,yBAA0BL,CAAgB,EACtDF,EAAaE,CAAgB,CAC/B,OAASM,EAAG,CACVR,EAAa,CAAC,CAAC,EACf,QAAQ,MAAMQ,CAAC,CACjB,QAAE,CACAV,EAAW,EAAK,CAClB,CACF,GAEe,CACjB,EAAG,CAACF,CAAM,CAAC,EAEJ,CACL,UAAAC,EACA,UAAAE,CACF,CACF,CAEA,IAAOU,EAAQf",
4
+ "sourcesContent": ["import { useEffect, useState } from 'react'\n\nimport { useHeadlessContext } from '@anker-in/lib'\nimport { type ShippingCountry, type ShippingZone } from '../../type'\n\nfunction useShippingCountries({ shopifyStoreDomain }: { shopifyStoreDomain: string }) {\n const { locale = '' } = useHeadlessContext()\n\n const [isLoading, setLoading] = useState(false)\n const [countries, setCountries] = useState<ShippingCountry[]>([])\n\n useEffect(() => {\n const fetchCountries = async () => {\n setLoading(true)\n try {\n const response = await fetch(`/api/multipass/rainbowbridge/uc/shop/shipping_zones?shop=${shopifyStoreDomain}`, {\n credentials: 'include',\n headers: {\n 'current-language': locale,\n },\n })\n const res: any = await response.json()\n\n // \u56FD\u5BB6\u8FC7\u6EE4\n let shipsToCountries: ShippingCountry[] = []\n const countrySet = new Set()\n const shippingZones = res?.data?.data || res?.data || []\n shippingZones.forEach((shippingZoneItem: ShippingZone) => {\n shippingZoneItem.countries.forEach(shippingZoneCountryItem => {\n if (!countrySet.has(shippingZoneCountryItem.code)) {\n countrySet.add(shippingZoneCountryItem.code)\n shipsToCountries.push(shippingZoneCountryItem)\n }\n })\n })\n\n // \u5B57\u6BCD\u987A\u5E8F\u6392\u5E8F\n shipsToCountries = shipsToCountries.sort((a, b) => {\n return a.code.localeCompare(b.code)\n })\n\n console.log('fetch shipsToCountries', shipsToCountries)\n setCountries(shipsToCountries)\n } catch (e) {\n setCountries([])\n console.error(e)\n } finally {\n setLoading(false)\n }\n }\n\n fetchCountries()\n }, [locale])\n\n return {\n isLoading,\n countries,\n }\n}\n\nexport default useShippingCountries\n"],
5
+ "mappings": "AAAA,OAAS,aAAAA,EAAW,YAAAC,MAAgB,QAEpC,OAAS,sBAAAC,MAA0B,gBAGnC,SAASC,EAAqB,CAAE,mBAAAC,CAAmB,EAAmC,CACpF,KAAM,CAAE,OAAAC,EAAS,EAAG,EAAIH,EAAmB,EAErC,CAACI,EAAWC,CAAU,EAAIN,EAAS,EAAK,EACxC,CAACO,EAAWC,CAAY,EAAIR,EAA4B,CAAC,CAAC,EAEhE,OAAAD,EAAU,IAAM,EACS,SAAY,CACjCO,EAAW,EAAI,EACf,GAAI,CAOF,MAAMG,EAAW,MANA,MAAM,MAAM,4DAA4DN,CAAkB,GAAI,CAC7G,YAAa,UACb,QAAS,CACP,mBAAoBC,CACtB,CACF,CAAC,GAC+B,KAAK,EAGrC,IAAIM,EAAsC,CAAC,EAC3C,MAAMC,EAAa,IAAI,KACDF,GAAK,MAAM,MAAQA,GAAK,MAAQ,CAAC,GACzC,QAASG,GAAmC,CACxDA,EAAiB,UAAU,QAAQC,GAA2B,CACvDF,EAAW,IAAIE,EAAwB,IAAI,IAC9CF,EAAW,IAAIE,EAAwB,IAAI,EAC3CH,EAAiB,KAAKG,CAAuB,EAEjD,CAAC,CACH,CAAC,EAGDH,EAAmBA,EAAiB,KAAK,CAACI,EAAGC,IACpCD,EAAE,KAAK,cAAcC,EAAE,IAAI,CACnC,EAED,QAAQ,IAAI,yBAA0BL,CAAgB,EACtDF,EAAaE,CAAgB,CAC/B,OAASM,EAAG,CACVR,EAAa,CAAC,CAAC,EACf,QAAQ,MAAMQ,CAAC,CACjB,QAAE,CACAV,EAAW,EAAK,CAClB,CACF,GAEe,CACjB,EAAG,CAACF,CAAM,CAAC,EAEJ,CACL,UAAAC,EACA,UAAAE,CACF,CACF,CAEA,IAAOU,EAAQf",
6
6
  "names": ["useEffect", "useState", "useHeadlessContext", "useShippingCountries", "shopifyStoreDomain", "locale", "isLoading", "setLoading", "countries", "setCountries", "res", "shipsToCountries", "countrySet", "shippingZoneItem", "shippingZoneCountryItem", "a", "b", "e", "useShippingCountries_default"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{useMemo as i}from"react";import{TaskSubType as c}from"../const";import b from"./useActivities";import{useCreditsContext as a}from"../provider";import{useHeadlessContext as p,useSubscriptions as m}from"@anker-in/lib";const C=()=>{const{profile:o}=a(),{brand:n}=p(),u=i(()=>({page:1,pageSize:50}),[]),{activities:r}=b(u),{data:t}=m({email:o?.email}),s=t?.data||t;return i(()=>s?.preference?s.preference.some(e=>e.brand===n&&e.subscribe)?!0:r?.some(e=>e.task_sub_type===c.Subscription):!1,[s?.preference,r])};export{C as useSubscribed};
1
+ import{useMemo as i}from"react";import{TaskSubType as a}from"../const";import b from"./useActivities";import{useCreditsContext as p}from"../provider";import{useHeadlessContext as m,useSubscriptions as f}from"@anker-in/lib";const g=()=>{const{profile:o,apiBaseUrl:n}=p(),{brand:u}=m(),c=i(()=>({page:1,pageSize:50}),[]),{activities:r}=b(c),{data:t}=f({email:o?.email,baseUrl:n}),s=t?.data||t;return i(()=>s?.preference?s.preference.some(e=>e.brand===u&&e.subscribe)?!0:r?.some(e=>e.task_sub_type===a.Subscription):!1,[s?.preference,r])};export{g as useSubscribed};
2
2
  //# sourceMappingURL=useSubscribed.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/credits/context/hooks/useSubscribed.ts"],
4
- "sourcesContent": ["import { useMemo } from 'react'\n\nimport { TaskSubType } from '../const'\nimport useActivities from './useActivities'\nimport { useCreditsContext } from '../provider'\nimport { useHeadlessContext, useSubscriptions } from '@anker-in/lib'\n\nexport const useSubscribed = () => {\n const { profile } = useCreditsContext()\n const { brand } = useHeadlessContext()\n\n const activitiesOptions = useMemo(() => ({ page: 1, pageSize: 50 }), [])\n\n const { activities } = useActivities(activitiesOptions)\n const { data: subscription } = useSubscriptions({ email: profile?.email })\n const subscriptionData = subscription?.data || subscription\n\n const isSubscribed = useMemo(() => {\n if (!subscriptionData?.preference) {\n return false\n }\n\n const subscribeResult = subscriptionData.preference.some((item: any) => {\n return item.brand === brand && item.subscribe\n })\n\n if (subscribeResult) {\n return true\n }\n\n return activities?.some(item => {\n return item.task_sub_type === TaskSubType.Subscription\n })\n }, [subscriptionData?.preference, activities])\n\n return isSubscribed\n}\n"],
5
- "mappings": "AAAA,OAAS,WAAAA,MAAe,QAExB,OAAS,eAAAC,MAAmB,WAC5B,OAAOC,MAAmB,kBAC1B,OAAS,qBAAAC,MAAyB,cAClC,OAAS,sBAAAC,EAAoB,oBAAAC,MAAwB,gBAE9C,MAAMC,EAAgB,IAAM,CACjC,KAAM,CAAE,QAAAC,CAAQ,EAAIJ,EAAkB,EAChC,CAAE,MAAAK,CAAM,EAAIJ,EAAmB,EAE/BK,EAAoBT,EAAQ,KAAO,CAAE,KAAM,EAAG,SAAU,EAAG,GAAI,CAAC,CAAC,EAEjE,CAAE,WAAAU,CAAW,EAAIR,EAAcO,CAAiB,EAChD,CAAE,KAAME,CAAa,EAAIN,EAAiB,CAAE,MAAOE,GAAS,KAAM,CAAC,EACnEK,EAAmBD,GAAc,MAAQA,EAoB/C,OAlBqBX,EAAQ,IACtBY,GAAkB,WAICA,EAAiB,WAAW,KAAMC,GACjDA,EAAK,QAAUL,GAASK,EAAK,SACrC,EAGQ,GAGFH,GAAY,KAAKG,GACfA,EAAK,gBAAkBZ,EAAY,YAC3C,EAbQ,GAcR,CAACW,GAAkB,WAAYF,CAAU,CAAC,CAG/C",
6
- "names": ["useMemo", "TaskSubType", "useActivities", "useCreditsContext", "useHeadlessContext", "useSubscriptions", "useSubscribed", "profile", "brand", "activitiesOptions", "activities", "subscription", "subscriptionData", "item"]
4
+ "sourcesContent": ["import { useMemo } from 'react'\n\nimport { TaskSubType } from '../const'\nimport useActivities from './useActivities'\nimport { useCreditsContext } from '../provider'\nimport { useHeadlessContext, useSubscriptions } from '@anker-in/lib'\n\nexport const useSubscribed = () => {\n const { profile, apiBaseUrl } = useCreditsContext()\n const { brand } = useHeadlessContext()\n\n const activitiesOptions = useMemo(() => ({ page: 1, pageSize: 50 }), [])\n\n const { activities } = useActivities(activitiesOptions)\n const { data: subscription } = useSubscriptions({ email: profile?.email, baseUrl: apiBaseUrl })\n const subscriptionData = subscription?.data || subscription\n\n const isSubscribed = useMemo(() => {\n if (!subscriptionData?.preference) {\n return false\n }\n\n const subscribeResult = subscriptionData.preference.some((item: any) => {\n return item.brand === brand && item.subscribe\n })\n\n if (subscribeResult) {\n return true\n }\n\n return activities?.some(item => {\n return item.task_sub_type === TaskSubType.Subscription\n })\n }, [subscriptionData?.preference, activities])\n\n return isSubscribed\n}\n"],
5
+ "mappings": "AAAA,OAAS,WAAAA,MAAe,QAExB,OAAS,eAAAC,MAAmB,WAC5B,OAAOC,MAAmB,kBAC1B,OAAS,qBAAAC,MAAyB,cAClC,OAAS,sBAAAC,EAAoB,oBAAAC,MAAwB,gBAE9C,MAAMC,EAAgB,IAAM,CACjC,KAAM,CAAE,QAAAC,EAAS,WAAAC,CAAW,EAAIL,EAAkB,EAC5C,CAAE,MAAAM,CAAM,EAAIL,EAAmB,EAE/BM,EAAoBV,EAAQ,KAAO,CAAE,KAAM,EAAG,SAAU,EAAG,GAAI,CAAC,CAAC,EAEjE,CAAE,WAAAW,CAAW,EAAIT,EAAcQ,CAAiB,EAChD,CAAE,KAAME,CAAa,EAAIP,EAAiB,CAAE,MAAOE,GAAS,MAAO,QAASC,CAAW,CAAC,EACxFK,EAAmBD,GAAc,MAAQA,EAoB/C,OAlBqBZ,EAAQ,IACtBa,GAAkB,WAICA,EAAiB,WAAW,KAAMC,GACjDA,EAAK,QAAUL,GAASK,EAAK,SACrC,EAGQ,GAGFH,GAAY,KAAKG,GACfA,EAAK,gBAAkBb,EAAY,YAC3C,EAbQ,GAcR,CAACY,GAAkB,WAAYF,CAAU,CAAC,CAG/C",
6
+ "names": ["useMemo", "TaskSubType", "useActivities", "useCreditsContext", "useHeadlessContext", "useSubscriptions", "useSubscribed", "profile", "apiBaseUrl", "brand", "activitiesOptions", "activities", "subscription", "subscriptionData", "item"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{jsx as t,jsxs as c}from"react/jsx-runtime";import{useCallback as y,useEffect as A,useState as i}from"react";import{Button as U,Checkbox as B,Picture as D,Text as a}from"@anker-in/headless-ui";import{gaTrack as R,classNames as C,useHeadlessContext as E}from"@anker-in/lib";import d from"js-cookie";import{parse as F}from"query-string";import{emailValidate as H}from"../../credits/context/utils";import{useMemberPopupContext as I}from"../context/provider";import{ROUNDED_BRANDS as O}from"../../../constants";function j(){if(typeof window>"u")return{register_source:""};const{search:e,href:o}=window.location,n=F(e);return{fbuy_ref_code:d.get("fbuy_ref_code"),ref:d.get("ref_ads"),inviter_code:n.ic??n.inviter_code??d.get("inviter_code"),register_source:n.redirect??d.get("reg_source")??o}}async function q(e){if(typeof window>"u"||!window?.grecaptcha?.execute||!e)return"";try{return await window.grecaptcha.execute(e,{action:"activity"})}catch{return""}}function z({copy:e,email:o}){const{alpcConfig:n,setIsSubscribeSuccess:f,pageHandle:p}=I(),{locale:b}=n,{brand:N,storeDomain:x,recaptchaSitekey:M}=E(),g=O.includes(N),[u,S]=i(e.policyDefaultChecked??!1),[l,h]=i(o??""),[_,s]=i(""),[k,v]=i(""),[L,w]=i(!1);A(()=>{o&&h(o)},[o]);const T=y(async()=>{if(s(""),!l)return s("Please fill in your email");if(!H(l))return s("Invalid email address");if(!u)return s("Please agree to the policy");w(!0);const{register_source:r}=j(),P=await q(M||"");try{const m=await(await fetch("/api/multipass/rainbowbridge/activities",{method:"POST",headers:{"Content-Type":"application/json","current-language":b,"X-Recaptcha-Token":P},body:JSON.stringify({email:l,register_source:r,shopify_domain:x,single_brand_subscribe:e.single_brand_subscribe??!0,genre:e.genre??e.dealsType??"",sub_brand_type:e.sub_brand_type??""})})).json();m?.data?.is_new_subscribe?m?.data?.errors?s(m?.data?.errors??"Error occurred"):(v(e.successTips??"Subscribed successfully!"),f(!0),R({event:"ga4Event",event_name:"subscribe",event_parameters:{page_group:e.dealsType??e.genre??"",position:"sticky",info:"Member Floating Window"}})):v(e.subscribedLabel??"You've already subscribed!")}catch{s("Network error")}finally{w(!1)}},[l,u,b,x,e,f]);return c("div",{className:"flex flex-col",children:[t(a,{className:"text-[22px] font-bold leading-[1.2]",html:e.title}),e.desc&&t(a,{className:"text-[16px] mt-[16px] font-bold text-[#1E2024]",html:e.desc}),t("input",{className:C("h-[46px] w-full border mt-[8px] px-[14px] text-[16px] outline-none placeholder:text-[#999]",g?"rounded-[4px]":"rounded-none"),placeholder:e.placeholder,value:l,onChange:r=>{s(""),h(r.target.value.trim())}}),c("div",{className:"flex w-full mt-[8px] items-start gap-[8px]",children:[t(B,{checked:u,onCheckedChange:()=>S(r=>!r),className:"border-[#1d1d1f] mt-[2px]"}),t("label",{className:"text-left text-[14px] font-bold text-[#4A4C56] [&_a]:underline",dangerouslySetInnerHTML:{__html:e.policy??""}})]}),t(U,{className:"w-full mt-[16px]",size:"base",loading:L,onClick:T,children:e.buttonLabel??"Subscribe"}),_&&t("div",{className:"text-left mt-[4px] text-[16px] font-semibold text-[#f84d4f]",children:t(a,{html:_})}),t("div",{className:"text-left mt-[4px] text-[16px] font-semibold text-[#52c41a]",children:t(a,{html:k})}),e.promo&&c("div",{className:"flex mt-[32px] flex-col text-left",children:[c("div",{className:"flex flex-col",children:[e.promo?.title&&t(a,{className:"text-[18px] font-bold leading-[1.2]",html:e.promo.title}),e.promo.description&&t(a,{className:"text-[14px] text-[#080A0F] mt-[8px] font-bold",html:e.promo.description}),e.promo.learnMoreLabel&&e.promo.learnMoreUrl&&c("a",{href:(()=>{try{if(!p)return e.promo.learnMoreUrl;const r=new URL(e.promo.learnMoreUrl,window.location.href);return r.searchParams.set("ref",`${p}_subscribe`),r.toString()}catch{return e.promo.learnMoreUrl}})(),target:"_blank",rel:"noopener noreferrer",className:"flex mt-[8px] items-center gap-[4px] text-[14px] font-bold",children:[e.promo.learnMoreLabel,t("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:t("path",{d:"M5.52827 3.52876C5.78862 3.26841 6.21063 3.26841 6.47098 3.52876L10.471 7.52876C10.7313 7.78911 10.7313 8.21112 10.471 8.47147L6.47098 12.4715C6.21063 12.7318 5.78862 12.7318 5.52827 12.4715C5.26792 12.2111 5.26792 11.7891 5.52827 11.5288L9.05692 8.00011L5.52827 4.47147C5.26792 4.21112 5.26792 3.78911 5.52827 3.52876Z",fill:"#080A0F"})})]})]}),e.promo.image?.url&&t(D,{source:e.promo.image.url,alt:e.promo.image.alt??"",className:C("h-[100px] mt-[8px] w-full object-cover",g?"rounded-[8px]":"rounded-none")})]})]})}export{z as default};
1
+ import{jsx as t,jsxs as c}from"react/jsx-runtime";import{useCallback as y,useEffect as A,useState as i}from"react";import{Button as U,Checkbox as B,Picture as D,Text as o}from"@anker-in/headless-ui";import{gaTrack as R,classNames as C,useHeadlessContext as E}from"@anker-in/lib";import d from"js-cookie";import{parse as F}from"query-string";import{emailValidate as H}from"../../credits/context/utils";import{useMemberPopupContext as I}from"../context/provider";import{ROUNDED_BRANDS as O}from"../../../constants";function j(){if(typeof window>"u")return{register_source:""};const{search:e,href:a}=window.location,n=F(e);return{fbuy_ref_code:d.get("fbuy_ref_code"),ref:d.get("ref_ads"),inviter_code:n.ic??n.inviter_code??d.get("inviter_code"),register_source:n.redirect??d.get("reg_source")??a}}async function q(e){if(typeof window>"u"||!window?.grecaptcha?.execute||!e)return"";try{return await window.grecaptcha.execute(e,{action:"activity"})}catch{return""}}function z({copy:e,email:a}){const{alpcConfig:n,setIsSubscribeSuccess:f,pageHandle:p}=I(),{locale:b}=n,{brand:N,storeDomain:x,recaptchaSitekey:M}=E(),g=O.includes(N),[u,S]=i(e.policyDefaultChecked??!1),[l,h]=i(a??""),[_,s]=i(""),[k,v]=i(""),[L,w]=i(!1);A(()=>{a&&h(a)},[a]);const T=y(async()=>{if(s(""),!l)return s("Please fill in your email");if(!H(l))return s("Invalid email address");if(!u)return s("Please agree to the policy");w(!0);const{register_source:r}=j(),P=await q(M||"");try{const m=await(await fetch("/api/multipass/rainbowbridge/activities",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json","current-language":b,"X-Recaptcha-Token":P},body:JSON.stringify({email:l,register_source:r,shopify_domain:x,single_brand_subscribe:e.single_brand_subscribe??!0,genre:e.genre??e.dealsType??"",sub_brand_type:e.sub_brand_type??""})})).json();m?.data?.is_new_subscribe?m?.data?.errors?s(m?.data?.errors??"Error occurred"):(v(e.successTips??"Subscribed successfully!"),f(!0),R({event:"ga4Event",event_name:"subscribe",event_parameters:{page_group:e.dealsType??e.genre??"",position:"sticky",info:"Member Floating Window"}})):v(e.subscribedLabel??"You've already subscribed!")}catch{s("Network error")}finally{w(!1)}},[l,u,b,x,e,f]);return c("div",{className:"flex flex-col",children:[t(o,{className:"text-[22px] font-bold leading-[1.2]",html:e.title}),e.desc&&t(o,{className:"text-[16px] mt-[16px] font-bold text-[#1E2024]",html:e.desc}),t("input",{className:C("h-[46px] w-full border mt-[8px] px-[14px] text-[16px] outline-none placeholder:text-[#999]",g?"rounded-[4px]":"rounded-none"),placeholder:e.placeholder,value:l,onChange:r=>{s(""),h(r.target.value.trim())}}),c("div",{className:"flex w-full mt-[8px] items-start gap-[8px]",children:[t(B,{checked:u,onCheckedChange:()=>S(r=>!r),className:"border-[#1d1d1f] mt-[2px]"}),t("label",{className:"text-left text-[14px] font-bold text-[#4A4C56] [&_a]:underline",dangerouslySetInnerHTML:{__html:e.policy??""}})]}),t(U,{className:"w-full mt-[16px]",size:"base",loading:L,onClick:T,children:e.buttonLabel??"Subscribe"}),_&&t("div",{className:"text-left mt-[4px] text-[16px] font-semibold text-[#f84d4f]",children:t(o,{html:_})}),t("div",{className:"text-left mt-[4px] text-[16px] font-semibold text-[#52c41a]",children:t(o,{html:k})}),e.promo&&c("div",{className:"flex mt-[32px] flex-col text-left",children:[c("div",{className:"flex flex-col",children:[e.promo?.title&&t(o,{className:"text-[18px] font-bold leading-[1.2]",html:e.promo.title}),e.promo.description&&t(o,{className:"text-[14px] text-[#080A0F] mt-[8px] font-bold",html:e.promo.description}),e.promo.learnMoreLabel&&e.promo.learnMoreUrl&&c("a",{href:(()=>{try{if(!p)return e.promo.learnMoreUrl;const r=new URL(e.promo.learnMoreUrl,window.location.href);return r.searchParams.set("ref",`${p}_subscribe`),r.toString()}catch{return e.promo.learnMoreUrl}})(),target:"_blank",rel:"noopener noreferrer",className:"flex mt-[8px] items-center gap-[4px] text-[14px] font-bold",children:[e.promo.learnMoreLabel,t("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:t("path",{d:"M5.52827 3.52876C5.78862 3.26841 6.21063 3.26841 6.47098 3.52876L10.471 7.52876C10.7313 7.78911 10.7313 8.21112 10.471 8.47147L6.47098 12.4715C6.21063 12.7318 5.78862 12.7318 5.52827 12.4715C5.26792 12.2111 5.26792 11.7891 5.52827 11.5288L9.05692 8.00011L5.52827 4.47147C5.26792 4.21112 5.26792 3.78911 5.52827 3.52876Z",fill:"#080A0F"})})]})]}),e.promo.image?.url&&t(D,{source:e.promo.image.url,alt:e.promo.image.alt??"",className:C("h-[100px] mt-[8px] w-full object-cover",g?"rounded-[8px]":"rounded-none")})]})]})}export{z as default};
2
2
  //# sourceMappingURL=ActivitiesSubscribePanel.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/memberPopup/panels/ActivitiesSubscribePanel.tsx"],
4
- "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Checkbox, Picture, Text } from '@anker-in/headless-ui'\nimport { gaTrack, classNames as cn, useHeadlessContext } from '@anker-in/lib'\nimport Cookies from 'js-cookie'\nimport { parse } from 'query-string'\nimport { emailValidate } from '../../credits/context/utils'\nimport { useMemberPopupContext } from '../context/provider'\nimport type { SubscribeModalCopy } from '../type'\nimport { ROUNDED_BRANDS } from '../../../constants'\n\ntype Props = {\n copy: SubscribeModalCopy\n email?: string\n}\n\nfunction getAdCookie() {\n if (typeof window === 'undefined') return { register_source: '' }\n const { search, href } = window.location\n const query = parse(search)\n return {\n fbuy_ref_code: Cookies.get('fbuy_ref_code'),\n ref: Cookies.get('ref_ads'),\n inviter_code: query.ic ?? query.inviter_code ?? Cookies.get('inviter_code'),\n register_source: query.redirect ?? Cookies.get('reg_source') ?? href,\n }\n}\n\nasync function getRecaptchaToken(sitekey: string): Promise<string> {\n if (typeof window === 'undefined' || !window?.grecaptcha?.execute) return ''\n if (!sitekey) return ''\n try {\n return await window.grecaptcha.execute(sitekey, { action: 'activity' })\n } catch {\n return ''\n }\n}\n\nexport default function ActivitiesSubscribeModal({ copy, email: initialEmail }: Props) {\n const { alpcConfig, setIsSubscribeSuccess, pageHandle } = useMemberPopupContext()\n const { locale } = alpcConfig\n const { brand: headlessBrand, storeDomain, recaptchaSitekey } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(headlessBrand)\n const [policy, setPolicy] = useState(copy.policyDefaultChecked ?? false)\n const [email, setEmail] = useState(initialEmail ?? '')\n const [errorMessage, setErrorMessage] = useState('')\n const [successMessage, setSuccessMessage] = useState('')\n const [loading, setLoading] = useState(false)\n\n useEffect(() => {\n if (initialEmail) setEmail(initialEmail)\n }, [initialEmail])\n\n const handleSubmit = useCallback(async () => {\n setErrorMessage('')\n if (!email) return setErrorMessage('Please fill in your email')\n if (!emailValidate(email)) return setErrorMessage('Invalid email address')\n if (!policy) return setErrorMessage('Please agree to the policy')\n\n setLoading(true)\n const { register_source } = getAdCookie()\n const recaptchaToken = await getRecaptchaToken(recaptchaSitekey || '')\n try {\n const response = await fetch('/api/multipass/rainbowbridge/activities', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'current-language': locale,\n 'X-Recaptcha-Token': recaptchaToken,\n },\n body: JSON.stringify({\n email,\n register_source,\n shopify_domain: storeDomain,\n single_brand_subscribe: copy.single_brand_subscribe ?? true,\n genre: copy.genre ?? copy.dealsType ?? '',\n sub_brand_type: copy.sub_brand_type ?? '',\n }),\n })\n const result = await response.json()\n if (!result?.data?.is_new_subscribe) {\n setSuccessMessage(copy.subscribedLabel ?? \"You've already subscribed!\")\n } else if (!result?.data?.errors) {\n setSuccessMessage(copy.successTips ?? 'Subscribed successfully!')\n setIsSubscribeSuccess(true)\n gaTrack({\n event: 'ga4Event',\n event_name: 'subscribe',\n event_parameters: {\n page_group: copy.dealsType ?? copy.genre ?? '',\n position: 'sticky',\n info: 'Member Floating Window',\n },\n })\n } else {\n setErrorMessage(result?.data?.errors ?? 'Error occurred')\n }\n } catch {\n setErrorMessage('Network error')\n } finally {\n setLoading(false)\n }\n }, [email, policy, locale, storeDomain, copy, setIsSubscribeSuccess])\n\n return (\n <div className=\"flex flex-col\">\n <Text className=\"text-[22px] font-bold leading-[1.2]\" html={copy.title} />\n {copy.desc && <Text className=\"text-[16px] mt-[16px] font-bold text-[#1E2024]\" html={copy.desc} />}\n\n <input\n className={cn(\n 'h-[46px] w-full border mt-[8px] px-[14px] text-[16px] outline-none placeholder:text-[#999]',\n rounded ? 'rounded-[4px]' : 'rounded-none'\n )}\n placeholder={copy.placeholder}\n value={email}\n onChange={e => {\n setErrorMessage('')\n setEmail(e.target.value.trim())\n }}\n />\n\n <div className=\"flex w-full mt-[8px] items-start gap-[8px]\">\n <Checkbox checked={policy} onCheckedChange={() => setPolicy(v => !v)} className=\"border-[#1d1d1f] mt-[2px]\" />\n <label\n className=\"text-left text-[14px] font-bold text-[#4A4C56] [&_a]:underline\"\n dangerouslySetInnerHTML={{ __html: copy.policy ?? '' }}\n />\n </div>\n\n <Button className=\"w-full mt-[16px]\" size=\"base\" loading={loading} onClick={handleSubmit}>\n {copy.buttonLabel ?? 'Subscribe'}\n </Button>\n\n {errorMessage && (\n <div className=\"text-left mt-[4px] text-[16px] font-semibold text-[#f84d4f]\">\n <Text html={errorMessage} />\n </div>\n )}\n <div className=\"text-left mt-[4px] text-[16px] font-semibold text-[#52c41a]\">\n <Text html={successMessage} />\n </div>\n\n {copy.promo && (\n <div className=\"flex mt-[32px] flex-col text-left\">\n <div className=\"flex flex-col\">\n {copy.promo?.title && <Text className=\"text-[18px] font-bold leading-[1.2]\" html={copy.promo.title} />}\n {copy.promo.description && (\n <Text className=\"text-[14px] text-[#080A0F] mt-[8px] font-bold\" html={copy.promo.description} />\n )}\n {copy.promo.learnMoreLabel && copy.promo.learnMoreUrl && (\n <a\n href={(() => {\n try {\n if (!pageHandle) return copy.promo!.learnMoreUrl!\n const url = new URL(copy.promo!.learnMoreUrl!, window.location.href)\n url.searchParams.set('ref', `${pageHandle}_subscribe`)\n return url.toString()\n } catch {\n return copy.promo!.learnMoreUrl!\n }\n })()}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex mt-[8px] items-center gap-[4px] text-[14px] font-bold\"\n >\n {copy.promo.learnMoreLabel}\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M5.52827 3.52876C5.78862 3.26841 6.21063 3.26841 6.47098 3.52876L10.471 7.52876C10.7313 7.78911 10.7313 8.21112 10.471 8.47147L6.47098 12.4715C6.21063 12.7318 5.78862 12.7318 5.52827 12.4715C5.26792 12.2111 5.26792 11.7891 5.52827 11.5288L9.05692 8.00011L5.52827 4.47147C5.26792 4.21112 5.26792 3.78911 5.52827 3.52876Z\"\n fill=\"#080A0F\"\n />\n </svg>\n </a>\n )}\n </div>\n {copy.promo.image?.url && (\n <Picture\n source={copy.promo.image.url}\n alt={copy.promo.image.alt ?? ''}\n className={cn('h-[100px] mt-[8px] w-full object-cover', rounded ? 'rounded-[8px]' : 'rounded-none')}\n />\n )}\n </div>\n )}\n </div>\n )\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Checkbox, Picture, Text } from '@anker-in/headless-ui'\nimport { gaTrack, classNames as cn, useHeadlessContext } from '@anker-in/lib'\nimport Cookies from 'js-cookie'\nimport { parse } from 'query-string'\nimport { emailValidate } from '../../credits/context/utils'\nimport { useMemberPopupContext } from '../context/provider'\nimport type { SubscribeModalCopy } from '../type'\nimport { ROUNDED_BRANDS } from '../../../constants'\n\ntype Props = {\n copy: SubscribeModalCopy\n email?: string\n}\n\nfunction getAdCookie() {\n if (typeof window === 'undefined') return { register_source: '' }\n const { search, href } = window.location\n const query = parse(search)\n return {\n fbuy_ref_code: Cookies.get('fbuy_ref_code'),\n ref: Cookies.get('ref_ads'),\n inviter_code: query.ic ?? query.inviter_code ?? Cookies.get('inviter_code'),\n register_source: query.redirect ?? Cookies.get('reg_source') ?? href,\n }\n}\n\nasync function getRecaptchaToken(sitekey: string): Promise<string> {\n if (typeof window === 'undefined' || !window?.grecaptcha?.execute) return ''\n if (!sitekey) return ''\n try {\n return await window.grecaptcha.execute(sitekey, { action: 'activity' })\n } catch {\n return ''\n }\n}\n\nexport default function ActivitiesSubscribeModal({ copy, email: initialEmail }: Props) {\n const { alpcConfig, setIsSubscribeSuccess, pageHandle } = useMemberPopupContext()\n const { locale } = alpcConfig\n const { brand: headlessBrand, storeDomain, recaptchaSitekey } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(headlessBrand)\n const [policy, setPolicy] = useState(copy.policyDefaultChecked ?? false)\n const [email, setEmail] = useState(initialEmail ?? '')\n const [errorMessage, setErrorMessage] = useState('')\n const [successMessage, setSuccessMessage] = useState('')\n const [loading, setLoading] = useState(false)\n\n useEffect(() => {\n if (initialEmail) setEmail(initialEmail)\n }, [initialEmail])\n\n const handleSubmit = useCallback(async () => {\n setErrorMessage('')\n if (!email) return setErrorMessage('Please fill in your email')\n if (!emailValidate(email)) return setErrorMessage('Invalid email address')\n if (!policy) return setErrorMessage('Please agree to the policy')\n\n setLoading(true)\n const { register_source } = getAdCookie()\n const recaptchaToken = await getRecaptchaToken(recaptchaSitekey || '')\n try {\n const response = await fetch('/api/multipass/rainbowbridge/activities', {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'current-language': locale,\n 'X-Recaptcha-Token': recaptchaToken,\n },\n body: JSON.stringify({\n email,\n register_source,\n shopify_domain: storeDomain,\n single_brand_subscribe: copy.single_brand_subscribe ?? true,\n genre: copy.genre ?? copy.dealsType ?? '',\n sub_brand_type: copy.sub_brand_type ?? '',\n }),\n })\n const result = await response.json()\n if (!result?.data?.is_new_subscribe) {\n setSuccessMessage(copy.subscribedLabel ?? \"You've already subscribed!\")\n } else if (!result?.data?.errors) {\n setSuccessMessage(copy.successTips ?? 'Subscribed successfully!')\n setIsSubscribeSuccess(true)\n gaTrack({\n event: 'ga4Event',\n event_name: 'subscribe',\n event_parameters: {\n page_group: copy.dealsType ?? copy.genre ?? '',\n position: 'sticky',\n info: 'Member Floating Window',\n },\n })\n } else {\n setErrorMessage(result?.data?.errors ?? 'Error occurred')\n }\n } catch {\n setErrorMessage('Network error')\n } finally {\n setLoading(false)\n }\n }, [email, policy, locale, storeDomain, copy, setIsSubscribeSuccess])\n\n return (\n <div className=\"flex flex-col\">\n <Text className=\"text-[22px] font-bold leading-[1.2]\" html={copy.title} />\n {copy.desc && <Text className=\"text-[16px] mt-[16px] font-bold text-[#1E2024]\" html={copy.desc} />}\n\n <input\n className={cn(\n 'h-[46px] w-full border mt-[8px] px-[14px] text-[16px] outline-none placeholder:text-[#999]',\n rounded ? 'rounded-[4px]' : 'rounded-none'\n )}\n placeholder={copy.placeholder}\n value={email}\n onChange={e => {\n setErrorMessage('')\n setEmail(e.target.value.trim())\n }}\n />\n\n <div className=\"flex w-full mt-[8px] items-start gap-[8px]\">\n <Checkbox checked={policy} onCheckedChange={() => setPolicy(v => !v)} className=\"border-[#1d1d1f] mt-[2px]\" />\n <label\n className=\"text-left text-[14px] font-bold text-[#4A4C56] [&_a]:underline\"\n dangerouslySetInnerHTML={{ __html: copy.policy ?? '' }}\n />\n </div>\n\n <Button className=\"w-full mt-[16px]\" size=\"base\" loading={loading} onClick={handleSubmit}>\n {copy.buttonLabel ?? 'Subscribe'}\n </Button>\n\n {errorMessage && (\n <div className=\"text-left mt-[4px] text-[16px] font-semibold text-[#f84d4f]\">\n <Text html={errorMessage} />\n </div>\n )}\n <div className=\"text-left mt-[4px] text-[16px] font-semibold text-[#52c41a]\">\n <Text html={successMessage} />\n </div>\n\n {copy.promo && (\n <div className=\"flex mt-[32px] flex-col text-left\">\n <div className=\"flex flex-col\">\n {copy.promo?.title && <Text className=\"text-[18px] font-bold leading-[1.2]\" html={copy.promo.title} />}\n {copy.promo.description && (\n <Text className=\"text-[14px] text-[#080A0F] mt-[8px] font-bold\" html={copy.promo.description} />\n )}\n {copy.promo.learnMoreLabel && copy.promo.learnMoreUrl && (\n <a\n href={(() => {\n try {\n if (!pageHandle) return copy.promo!.learnMoreUrl!\n const url = new URL(copy.promo!.learnMoreUrl!, window.location.href)\n url.searchParams.set('ref', `${pageHandle}_subscribe`)\n return url.toString()\n } catch {\n return copy.promo!.learnMoreUrl!\n }\n })()}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex mt-[8px] items-center gap-[4px] text-[14px] font-bold\"\n >\n {copy.promo.learnMoreLabel}\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M5.52827 3.52876C5.78862 3.26841 6.21063 3.26841 6.47098 3.52876L10.471 7.52876C10.7313 7.78911 10.7313 8.21112 10.471 8.47147L6.47098 12.4715C6.21063 12.7318 5.78862 12.7318 5.52827 12.4715C5.26792 12.2111 5.26792 11.7891 5.52827 11.5288L9.05692 8.00011L5.52827 4.47147C5.26792 4.21112 5.26792 3.78911 5.52827 3.52876Z\"\n fill=\"#080A0F\"\n />\n </svg>\n </a>\n )}\n </div>\n {copy.promo.image?.url && (\n <Picture\n source={copy.promo.image.url}\n alt={copy.promo.image.alt ?? ''}\n className={cn('h-[100px] mt-[8px] w-full object-cover', rounded ? 'rounded-[8px]' : 'rounded-none')}\n />\n )}\n </div>\n )}\n </div>\n )\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["jsx", "jsxs", "useCallback", "useEffect", "useState", "Button", "Checkbox", "Picture", "Text", "gaTrack", "cn", "useHeadlessContext", "Cookies", "parse", "emailValidate", "useMemberPopupContext", "ROUNDED_BRANDS", "getAdCookie", "search", "href", "query", "getRecaptchaToken", "sitekey", "ActivitiesSubscribeModal", "copy", "initialEmail", "alpcConfig", "setIsSubscribeSuccess", "pageHandle", "locale", "headlessBrand", "storeDomain", "recaptchaSitekey", "rounded", "policy", "setPolicy", "email", "setEmail", "errorMessage", "setErrorMessage", "successMessage", "setSuccessMessage", "loading", "setLoading", "handleSubmit", "register_source", "recaptchaToken", "result", "e", "v", "url"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import a from"swr/mutation";import{getAlpcPath as i}from"../../../../credits/context/utils";import{ALPC_COUNTRY_MAP as m}from"../../../../credits/context/const";function l(o){const{brand:n,locale:e,appName:r,apiBaseUrl:t}=o;return a("/v1/credit/redeem/coupon",async(p,{arg:s})=>(await fetch(i(e,t)+p,{method:"POST",headers:{"Content-Type":"application/json","current-language":e},body:JSON.stringify({brand:n,country:m.get(e)||e,app_name:r,...s})})).json())}export{l as useRedeemCoupon};
1
+ import a from"swr/mutation";import{getAlpcPath as i}from"../../../../credits/context/utils";import{ALPC_COUNTRY_MAP as m}from"../../../../credits/context/const";function l(o){const{brand:n,locale:e,appName:r,apiBaseUrl:t}=o;return a("/v1/credit/redeem/coupon",async(p,{arg:s})=>(await fetch(i(e,t)+p,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json","current-language":e},body:JSON.stringify({brand:n,country:m.get(e)||e,app_name:r,...s})})).json())}export{l as useRedeemCoupon};
2
2
  //# sourceMappingURL=useRedeemCoupon.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemCoupon.ts"],
4
- "sourcesContent": ["import useSWRMutation from 'swr/mutation'\nimport { getAlpcPath } from '../../../../credits/context/utils'\nimport { ALPC_COUNTRY_MAP } from '../../../../credits/context/const'\nimport type { AlpcConfig } from '../../../type'\n\ntype RedeemCouponResponse = {\n data: {\n data: { success: boolean; coupon_code: string }\n msg: string\n code: number\n }\n}\n\ntype RedeemCouponParams = {\n user_id?: string\n rule_id: number\n}\n\nexport function useRedeemCoupon(config: AlpcConfig) {\n const { brand, locale, appName, apiBaseUrl } = config\n\n return useSWRMutation<RedeemCouponResponse, Error, string, RedeemCouponParams>(\n `/v1/credit/redeem/coupon`,\n async (url: string, { arg }) => {\n const response = await fetch(getAlpcPath(locale, apiBaseUrl) + url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', 'current-language': locale },\n body: JSON.stringify({\n brand,\n country: ALPC_COUNTRY_MAP.get(locale) || locale,\n app_name: appName,\n ...arg,\n }),\n })\n return response.json()\n }\n )\n}\n"],
5
- "mappings": "AAAA,OAAOA,MAAoB,eAC3B,OAAS,eAAAC,MAAmB,oCAC5B,OAAS,oBAAAC,MAAwB,oCAgB1B,SAASC,EAAgBC,EAAoB,CAClD,KAAM,CAAE,MAAAC,EAAO,OAAAC,EAAQ,QAAAC,EAAS,WAAAC,CAAW,EAAIJ,EAE/C,OAAOJ,EACL,2BACA,MAAOS,EAAa,CAAE,IAAAC,CAAI,KACP,MAAM,MAAMT,EAAYK,EAAQE,CAAU,EAAIC,EAAK,CAClE,OAAQ,OACR,QAAS,CAAE,eAAgB,mBAAoB,mBAAoBH,CAAO,EAC1E,KAAM,KAAK,UAAU,CACnB,MAAAD,EACA,QAASH,EAAiB,IAAII,CAAM,GAAKA,EACzC,SAAUC,EACV,GAAGG,CACL,CAAC,CACH,CAAC,GACe,KAAK,CAEzB,CACF",
4
+ "sourcesContent": ["import useSWRMutation from 'swr/mutation'\nimport { getAlpcPath } from '../../../../credits/context/utils'\nimport { ALPC_COUNTRY_MAP } from '../../../../credits/context/const'\nimport type { AlpcConfig } from '../../../type'\n\ntype RedeemCouponResponse = {\n data: {\n data: { success: boolean; coupon_code: string }\n msg: string\n code: number\n }\n}\n\ntype RedeemCouponParams = {\n user_id?: string\n rule_id: number\n}\n\nexport function useRedeemCoupon(config: AlpcConfig) {\n const { brand, locale, appName, apiBaseUrl } = config\n\n return useSWRMutation<RedeemCouponResponse, Error, string, RedeemCouponParams>(\n `/v1/credit/redeem/coupon`,\n async (url: string, { arg }) => {\n const response = await fetch(getAlpcPath(locale, apiBaseUrl) + url, {\n method: 'POST',\n credentials: 'include',\n headers: { 'Content-Type': 'application/json', 'current-language': locale },\n body: JSON.stringify({\n brand,\n country: ALPC_COUNTRY_MAP.get(locale) || locale,\n app_name: appName,\n ...arg,\n }),\n })\n return response.json()\n }\n )\n}\n"],
5
+ "mappings": "AAAA,OAAOA,MAAoB,eAC3B,OAAS,eAAAC,MAAmB,oCAC5B,OAAS,oBAAAC,MAAwB,oCAgB1B,SAASC,EAAgBC,EAAoB,CAClD,KAAM,CAAE,MAAAC,EAAO,OAAAC,EAAQ,QAAAC,EAAS,WAAAC,CAAW,EAAIJ,EAE/C,OAAOJ,EACL,2BACA,MAAOS,EAAa,CAAE,IAAAC,CAAI,KACL,MAAM,MAAMT,EAAYK,EAAQE,CAAU,EAAIC,EAAK,CAClE,OAAQ,OACR,YAAa,UACb,QAAS,CAAE,eAAgB,mBAAoB,mBAAoBH,CAAO,EAC5E,KAAM,KAAK,UAAU,CACnB,MAAAD,EACA,QAASH,EAAiB,IAAII,CAAM,GAAKA,EACzC,SAAUC,EACV,GAAGG,CACL,CAAC,CACH,CAAC,GACe,KAAK,CAEzB,CACF",
6
6
  "names": ["useSWRMutation", "getAlpcPath", "ALPC_COUNTRY_MAP", "useRedeemCoupon", "config", "brand", "locale", "appName", "apiBaseUrl", "url", "arg"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{useCallback as d,useEffect as g,useState as f}from"react";import C from"swr/mutation";import{getAlpcPath as y}from"../../../../credits/context/utils";import{ALPC_COUNTRY_MAP as R}from"../../../../credits/context/const";function P(p){const{brand:t,locale:n,appName:i,apiBaseUrl:c}=p;let e=n;n==="pl"&&(e="eu");const[u,l]=f([]),{isMutating:m,trigger:a}=C("/v1/credit/consume_credit_rules",async(o,{arg:s})=>(await fetch(y(e,c)+o,{method:"POST",headers:{"Content-Type":"application/json","current-language":e},body:JSON.stringify(s)})).json()),r=d(o=>{a({brand:t,page:1,page_size:999,country:(R.get(e)||e)?.toUpperCase(),app_name:i,...o!==void 0&&{consume_type:o}},{onSuccess({data:s}){l(s?.data?.consume_credit_rules??[])}})},[t,e,i,a]);return g(()=>{t&&r()},[t,r]),{redeemableList:u,listLoading:m,getRedeemableList:r}}export{P as useRedeemableList};
1
+ import{useCallback as d,useEffect as g,useState as f}from"react";import C from"swr/mutation";import{getAlpcPath as y}from"../../../../credits/context/utils";import{ALPC_COUNTRY_MAP as R}from"../../../../credits/context/const";function P(p){const{brand:t,locale:n,appName:i,apiBaseUrl:c}=p;let e=n;n==="pl"&&(e="eu");const[u,l]=f([]),{isMutating:m,trigger:a}=C("/v1/credit/consume_credit_rules",async(r,{arg:o})=>(await fetch(y(e,c)+r,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json","current-language":e},body:JSON.stringify(o)})).json()),s=d(r=>{a({brand:t,page:1,page_size:999,country:(R.get(e)||e)?.toUpperCase(),app_name:i,...r!==void 0&&{consume_type:r}},{onSuccess({data:o}){l(o?.data?.consume_credit_rules??[])}})},[t,e,i,a]);return g(()=>{t&&s()},[t,s]),{redeemableList:u,listLoading:m,getRedeemableList:s}}export{P as useRedeemableList};
2
2
  //# sourceMappingURL=useRedeemableList.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemableList.ts"],
4
- "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport useSWRMutation from 'swr/mutation'\nimport { getAlpcPath, languageTerritory } from '../../../../credits/context/utils'\nimport { ALPC_COUNTRY_MAP, AlpcConsumeType } from '../../../../credits/context/const'\nimport type { ConsumeCreditRuleResponse } from '../../../../credits/context/response'\nimport type { AlpcConfig } from '../../../type'\n\nexport function useRedeemableList(config: AlpcConfig) {\n const { brand, locale, appName, apiBaseUrl } = config\n\n let resolvedLocale = locale\n if (locale === 'pl') resolvedLocale = 'eu'\n\n const [redeemableList, setRedeemableList] = useState<ConsumeCreditRuleResponse[]>([])\n\n const { isMutating: listLoading, trigger } = useSWRMutation(\n `/v1/credit/consume_credit_rules`,\n async (url: string, { arg }: { arg: Record<string, any> }) => {\n const response = await fetch(getAlpcPath(resolvedLocale, apiBaseUrl) + url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', 'current-language': resolvedLocale },\n body: JSON.stringify(arg),\n })\n return response.json()\n }\n )\n\n const getRedeemableList = useCallback(\n (consumeType?: AlpcConsumeType) => {\n trigger(\n {\n brand,\n page: 1,\n page_size: 999,\n country: (ALPC_COUNTRY_MAP.get(resolvedLocale) || resolvedLocale)?.toUpperCase(),\n app_name: appName,\n ...(consumeType !== undefined && { consume_type: consumeType }),\n },\n {\n onSuccess({ data }) {\n setRedeemableList(data?.data?.consume_credit_rules ?? [])\n },\n }\n )\n },\n [brand, resolvedLocale, appName, trigger]\n )\n\n useEffect(() => {\n if (!brand) return\n getRedeemableList()\n }, [brand, getRedeemableList])\n\n return { redeemableList, listLoading, getRedeemableList }\n}\n"],
5
- "mappings": "AAAA,OAAS,eAAAA,EAAa,aAAAC,EAAW,YAAAC,MAAgB,QACjD,OAAOC,MAAoB,eAC3B,OAAS,eAAAC,MAAsC,oCAC/C,OAAS,oBAAAC,MAAyC,oCAI3C,SAASC,EAAkBC,EAAoB,CACpD,KAAM,CAAE,MAAAC,EAAO,OAAAC,EAAQ,QAAAC,EAAS,WAAAC,CAAW,EAAIJ,EAE/C,IAAIK,EAAiBH,EACjBA,IAAW,OAAMG,EAAiB,MAEtC,KAAM,CAACC,EAAgBC,CAAiB,EAAIZ,EAAsC,CAAC,CAAC,EAE9E,CAAE,WAAYa,EAAa,QAAAC,CAAQ,EAAIb,EAC3C,kCACA,MAAOc,EAAa,CAAE,IAAAC,CAAI,KACP,MAAM,MAAMd,EAAYQ,EAAgBD,CAAU,EAAIM,EAAK,CAC1E,OAAQ,OACR,QAAS,CAAE,eAAgB,mBAAoB,mBAAoBL,CAAe,EAClF,KAAM,KAAK,UAAUM,CAAG,CAC1B,CAAC,GACe,KAAK,CAEzB,EAEMC,EAAoBnB,EACvBoB,GAAkC,CACjCJ,EACE,CACE,MAAAR,EACA,KAAM,EACN,UAAW,IACX,SAAUH,EAAiB,IAAIO,CAAc,GAAKA,IAAiB,YAAY,EAC/E,SAAUF,EACV,GAAIU,IAAgB,QAAa,CAAE,aAAcA,CAAY,CAC/D,EACA,CACE,UAAU,CAAE,KAAAC,CAAK,EAAG,CAClBP,EAAkBO,GAAM,MAAM,sBAAwB,CAAC,CAAC,CAC1D,CACF,CACF,CACF,EACA,CAACb,EAAOI,EAAgBF,EAASM,CAAO,CAC1C,EAEA,OAAAf,EAAU,IAAM,CACTO,GACLW,EAAkB,CACpB,EAAG,CAACX,EAAOW,CAAiB,CAAC,EAEtB,CAAE,eAAAN,EAAgB,YAAAE,EAAa,kBAAAI,CAAkB,CAC1D",
4
+ "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport useSWRMutation from 'swr/mutation'\nimport { getAlpcPath, languageTerritory } from '../../../../credits/context/utils'\nimport { ALPC_COUNTRY_MAP, AlpcConsumeType } from '../../../../credits/context/const'\nimport type { ConsumeCreditRuleResponse } from '../../../../credits/context/response'\nimport type { AlpcConfig } from '../../../type'\n\nexport function useRedeemableList(config: AlpcConfig) {\n const { brand, locale, appName, apiBaseUrl } = config\n\n let resolvedLocale = locale\n if (locale === 'pl') resolvedLocale = 'eu'\n\n const [redeemableList, setRedeemableList] = useState<ConsumeCreditRuleResponse[]>([])\n\n const { isMutating: listLoading, trigger } = useSWRMutation(\n `/v1/credit/consume_credit_rules`,\n async (url: string, { arg }: { arg: Record<string, any> }) => {\n const response = await fetch(getAlpcPath(resolvedLocale, apiBaseUrl) + url, {\n method: 'POST',\n credentials: 'include',\n headers: { 'Content-Type': 'application/json', 'current-language': resolvedLocale },\n body: JSON.stringify(arg),\n })\n return response.json()\n }\n )\n\n const getRedeemableList = useCallback(\n (consumeType?: AlpcConsumeType) => {\n trigger(\n {\n brand,\n page: 1,\n page_size: 999,\n country: (ALPC_COUNTRY_MAP.get(resolvedLocale) || resolvedLocale)?.toUpperCase(),\n app_name: appName,\n ...(consumeType !== undefined && { consume_type: consumeType }),\n },\n {\n onSuccess({ data }) {\n setRedeemableList(data?.data?.consume_credit_rules ?? [])\n },\n }\n )\n },\n [brand, resolvedLocale, appName, trigger]\n )\n\n useEffect(() => {\n if (!brand) return\n getRedeemableList()\n }, [brand, getRedeemableList])\n\n return { redeemableList, listLoading, getRedeemableList }\n}\n"],
5
+ "mappings": "AAAA,OAAS,eAAAA,EAAa,aAAAC,EAAW,YAAAC,MAAgB,QACjD,OAAOC,MAAoB,eAC3B,OAAS,eAAAC,MAAsC,oCAC/C,OAAS,oBAAAC,MAAyC,oCAI3C,SAASC,EAAkBC,EAAoB,CACpD,KAAM,CAAE,MAAAC,EAAO,OAAAC,EAAQ,QAAAC,EAAS,WAAAC,CAAW,EAAIJ,EAE/C,IAAIK,EAAiBH,EACjBA,IAAW,OAAMG,EAAiB,MAEtC,KAAM,CAACC,EAAgBC,CAAiB,EAAIZ,EAAsC,CAAC,CAAC,EAE9E,CAAE,WAAYa,EAAa,QAAAC,CAAQ,EAAIb,EAC3C,kCACA,MAAOc,EAAa,CAAE,IAAAC,CAAI,KACL,MAAM,MAAMd,EAAYQ,EAAgBD,CAAU,EAAIM,EAAK,CAC1E,OAAQ,OACR,YAAa,UACb,QAAS,CAAE,eAAgB,mBAAoB,mBAAoBL,CAAe,EACpF,KAAM,KAAK,UAAUM,CAAG,CAC1B,CAAC,GACe,KAAK,CAEzB,EAEMC,EAAoBnB,EACvBoB,GAAkC,CACjCJ,EACE,CACE,MAAAR,EACA,KAAM,EACN,UAAW,IACX,SAAUH,EAAiB,IAAIO,CAAc,GAAKA,IAAiB,YAAY,EAC/E,SAAUF,EACV,GAAIU,IAAgB,QAAa,CAAE,aAAcA,CAAY,CAC/D,EACA,CACE,UAAU,CAAE,KAAAC,CAAK,EAAG,CAClBP,EAAkBO,GAAM,MAAM,sBAAwB,CAAC,CAAC,CAC1D,CACF,CACF,CACF,EACA,CAACb,EAAOI,EAAgBF,EAASM,CAAO,CAC1C,EAEA,OAAAf,EAAU,IAAM,CACTO,GACLW,EAAkB,CACpB,EAAG,CAACX,EAAOW,CAAiB,CAAC,EAEtB,CAAE,eAAAN,EAAgB,YAAAE,EAAa,kBAAAI,CAAkB,CAC1D",
6
6
  "names": ["useCallback", "useEffect", "useState", "useSWRMutation", "getAlpcPath", "ALPC_COUNTRY_MAP", "useRedeemableList", "config", "brand", "locale", "appName", "apiBaseUrl", "resolvedLocale", "redeemableList", "setRedeemableList", "listLoading", "trigger", "url", "arg", "getRedeemableList", "consumeType", "data"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{jsx as t,jsxs as d}from"react/jsx-runtime";import{useCallback as B,useEffect as D,useState as l}from"react";import{Button as E,Checkbox as I,Text as C}from"@anker-in/headless-ui";import{gaTrack as L,classNames as N,useHeadlessContext as O}from"@anker-in/lib";import c from"js-cookie";import{parse as A}from"query-string";import{emailValidate as H}from"../../../credits/context/utils";import{useMemberPopupContext as R}from"../../context/provider";import{ROUNDED_BRANDS as j}from"../../../../constants";function q(){if(typeof window>"u")return{register_source:""};const{search:e,href:o}=window.location,a=A(e);return{fbuy_ref_code:c.get("fbuy_ref_code"),ref:c.get("ref_ads"),inviter_code:a.ic??a.inviter_code??c.get("inviter_code"),register_source:a.redirect??c.get("reg_source")??o}}function J({copy:e,email:o,onClose:a}){const{alpcConfig:S,setIsSubscribeSuccess:p,fetchCreditInfo:k,profile:m}=R(),{brand:x,locale:b}=S,{brand:w}=O(),T=j.includes(w),[u,g]=l(e.policyDefaultChecked??!1),[i,h]=l(o??""),[n,s]=l(""),[f,_]=l(""),[M,v]=l(!1);D(()=>{o&&h(o)},[o]);const P=B(async()=>{if(s(""),!i)return s("Please fill in your email");if(!H(i))return s("Invalid email address");if(!u)return s("Please agree to the policy");v(!0);const{register_source:r}=q();try{const y=await(await fetch("/api/multipass/subscribe/subscribe_emails",{method:"POST",headers:{"Content-Type":"application/json","current-language":b},body:JSON.stringify({email:i,register_source:r,brand:x,deals_type:e.dealsType??"vip_subscribe"})})).json();y.errors?s(y.errors??"Error occurred"):(_(e.successTips??"Subscribed successfully!"),p(!0),m?.user_id&&setTimeout(()=>k(m.user_id),3e3),L({event:"ga4Event",event_name:"subscribe",event_parameters:{page_group:e.dealsType??"",position:"sticky",info:""}}),setTimeout(()=>{_(""),a()},3e3))}catch{s("Network error")}finally{v(!1)}},[i,u,b,x,e,a,p]);return d("div",{className:"flex flex-col gap-[12px]",children:[d("div",{className:"flex flex-col gap-[8px]",children:[e.title&&t("h2",{className:"text-[24px] font-[700] leading-[1.2] text-[#080a0f]",children:e.title}),e.desc&&t(C,{className:"text-[16px] text-[#1e2024]",html:e.desc})]}),d("div",{className:"flex flex-col gap-[16px]",children:[t("input",{className:N("h-[46px] w-full border px-[14px] text-[16px] outline-none placeholder:text-[#999]",n?"border-[#f84d4f]":"border-[#d8d8d8]",T?"rounded-[4px]":"rounded-none"),placeholder:e.placeholder,value:i,onChange:r=>{s(""),h(r.target.value.trim())}}),d("div",{className:"flex w-full items-start gap-[8px]",children:[t(I,{checked:u,onCheckedChange:()=>g(r=>!r),className:"mt-[2px] border-[#1d1d1f]"}),t("label",{className:"cursor-pointer text-left text-[14px] text-[#1e2024] [&_a]:underline",onClick:()=>g(r=>!r),dangerouslySetInnerHTML:{__html:e.policy??""}})]}),(n||f)&&t("div",{className:N("text-[14px] font-[700]",n&&"text-[#f84d4f]",f&&"text-[#52c41a]"),children:t(C,{html:f||n})}),t(E,{className:"w-full",loading:M,onClick:P,children:e.buttonLabel??"Subscribe"})]})]})}export{J as default};
1
+ import{jsx as t,jsxs as d}from"react/jsx-runtime";import{useCallback as B,useEffect as D,useState as l}from"react";import{Button as E,Checkbox as I,Text as C}from"@anker-in/headless-ui";import{gaTrack as L,classNames as N,useHeadlessContext as O}from"@anker-in/lib";import c from"js-cookie";import{parse as A}from"query-string";import{emailValidate as H}from"../../../credits/context/utils";import{useMemberPopupContext as R}from"../../context/provider";import{ROUNDED_BRANDS as j}from"../../../../constants";function q(){if(typeof window>"u")return{register_source:""};const{search:e,href:o}=window.location,a=A(e);return{fbuy_ref_code:c.get("fbuy_ref_code"),ref:c.get("ref_ads"),inviter_code:a.ic??a.inviter_code??c.get("inviter_code"),register_source:a.redirect??c.get("reg_source")??o}}function J({copy:e,email:o,onClose:a}){const{alpcConfig:S,setIsSubscribeSuccess:p,fetchCreditInfo:k,profile:m}=R(),{brand:x,locale:b}=S,{brand:w}=O(),T=j.includes(w),[u,g]=l(e.policyDefaultChecked??!1),[i,h]=l(o??""),[n,s]=l(""),[f,_]=l(""),[M,v]=l(!1);D(()=>{o&&h(o)},[o]);const P=B(async()=>{if(s(""),!i)return s("Please fill in your email");if(!H(i))return s("Invalid email address");if(!u)return s("Please agree to the policy");v(!0);const{register_source:r}=q();try{const y=await(await fetch("/api/multipass/subscribe/subscribe_emails",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json","current-language":b},body:JSON.stringify({email:i,register_source:r,brand:x,deals_type:e.dealsType??"vip_subscribe"})})).json();y.errors?s(y.errors??"Error occurred"):(_(e.successTips??"Subscribed successfully!"),p(!0),m?.user_id&&setTimeout(()=>k(m.user_id),3e3),L({event:"ga4Event",event_name:"subscribe",event_parameters:{page_group:e.dealsType??"",position:"sticky",info:""}}),setTimeout(()=>{_(""),a()},3e3))}catch{s("Network error")}finally{v(!1)}},[i,u,b,x,e,a,p]);return d("div",{className:"flex flex-col gap-[12px]",children:[d("div",{className:"flex flex-col gap-[8px]",children:[e.title&&t("h2",{className:"text-[24px] font-[700] leading-[1.2] text-[#080a0f]",children:e.title}),e.desc&&t(C,{className:"text-[16px] text-[#1e2024]",html:e.desc})]}),d("div",{className:"flex flex-col gap-[16px]",children:[t("input",{className:N("h-[46px] w-full border px-[14px] text-[16px] outline-none placeholder:text-[#999]",n?"border-[#f84d4f]":"border-[#d8d8d8]",T?"rounded-[4px]":"rounded-none"),placeholder:e.placeholder,value:i,onChange:r=>{s(""),h(r.target.value.trim())}}),d("div",{className:"flex w-full items-start gap-[8px]",children:[t(I,{checked:u,onCheckedChange:()=>g(r=>!r),className:"mt-[2px] border-[#1d1d1f]"}),t("label",{className:"cursor-pointer text-left text-[14px] text-[#1e2024] [&_a]:underline",onClick:()=>g(r=>!r),dangerouslySetInnerHTML:{__html:e.policy??""}})]}),(n||f)&&t("div",{className:N("text-[14px] font-[700]",n&&"text-[#f84d4f]",f&&"text-[#52c41a]"),children:t(C,{html:f||n})}),t(E,{className:"w-full",loading:M,onClick:P,children:e.buttonLabel??"Subscribe"})]})]})}export{J as default};
2
2
  //# sourceMappingURL=SubscribeEmailPanel.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.tsx"],
4
- "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Checkbox, Text } from '@anker-in/headless-ui'\nimport { gaTrack, classNames as cn, useHeadlessContext } from '@anker-in/lib'\nimport Cookies from 'js-cookie'\nimport { parse } from 'query-string'\nimport { emailValidate } from '../../../credits/context/utils'\nimport { useMemberPopupContext } from '../../context/provider'\nimport type { SubscribeModalCopy } from '../../type'\nimport { ROUNDED_BRANDS } from '../../../../constants'\n\ntype Props = {\n copy: SubscribeModalCopy\n email?: string\n onClose: () => void\n}\n\nfunction getAdCookie() {\n if (typeof window === 'undefined') return { register_source: '' }\n const { search, href } = window.location\n const query = parse(search)\n return {\n fbuy_ref_code: Cookies.get('fbuy_ref_code'),\n ref: Cookies.get('ref_ads'),\n inviter_code: query.ic ?? query.inviter_code ?? Cookies.get('inviter_code'),\n register_source: query.redirect ?? Cookies.get('reg_source') ?? href,\n }\n}\n\nexport default function SubscribeEmailPanel({ copy, email: initialEmail, onClose }: Props) {\n const { alpcConfig, setIsSubscribeSuccess, fetchCreditInfo, profile } = useMemberPopupContext()\n const { brand, locale } = alpcConfig\n const { brand: headlessBrand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(headlessBrand)\n const [policy, setPolicy] = useState(copy.policyDefaultChecked ?? false)\n const [email, setEmail] = useState(initialEmail ?? '')\n const [errorMessage, setErrorMessage] = useState('')\n const [successMessage, setSuccessMessage] = useState('')\n const [loading, setLoading] = useState(false)\n\n useEffect(() => {\n if (initialEmail) setEmail(initialEmail)\n }, [initialEmail])\n\n const handleSubmit = useCallback(async () => {\n setErrorMessage('')\n if (!email) return setErrorMessage('Please fill in your email')\n if (!emailValidate(email)) return setErrorMessage('Invalid email address')\n if (!policy) return setErrorMessage('Please agree to the policy')\n\n setLoading(true)\n const { register_source } = getAdCookie()\n try {\n const response = await fetch('/api/multipass/subscribe/subscribe_emails', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', 'current-language': locale },\n body: JSON.stringify({\n email,\n register_source,\n brand,\n deals_type: copy.dealsType ?? 'vip_subscribe',\n }),\n })\n const result = await response.json()\n if (!result.errors) {\n setSuccessMessage(copy.successTips ?? 'Subscribed successfully!')\n setIsSubscribeSuccess(true)\n if (profile?.user_id) setTimeout(() => fetchCreditInfo(profile.user_id), 3000)\n gaTrack({\n event: 'ga4Event',\n event_name: 'subscribe',\n event_parameters: {\n page_group: copy.dealsType ?? '',\n position: 'sticky',\n info: '',\n },\n })\n setTimeout(() => {\n setSuccessMessage('')\n onClose()\n }, 3000)\n } else {\n setErrorMessage(result.errors ?? 'Error occurred')\n }\n } catch {\n setErrorMessage('Network error')\n } finally {\n setLoading(false)\n }\n }, [email, policy, locale, brand, copy, onClose, setIsSubscribeSuccess])\n\n return (\n <div className=\"flex flex-col gap-[12px]\">\n <div className=\"flex flex-col gap-[8px]\">\n {copy.title && <h2 className=\"text-[24px] font-[700] leading-[1.2] text-[#080a0f]\">{copy.title}</h2>}\n {copy.desc && <Text className=\"text-[16px] text-[#1e2024]\" html={copy.desc} />}\n </div>\n\n <div className=\"flex flex-col gap-[16px]\">\n <input\n className={cn(\n 'h-[46px] w-full border px-[14px] text-[16px] outline-none placeholder:text-[#999]',\n errorMessage ? 'border-[#f84d4f]' : 'border-[#d8d8d8]',\n rounded ? 'rounded-[4px]' : 'rounded-none'\n )}\n placeholder={copy.placeholder}\n value={email}\n onChange={e => {\n setErrorMessage('')\n setEmail(e.target.value.trim())\n }}\n />\n\n <div className=\"flex w-full items-start gap-[8px]\">\n <Checkbox checked={policy} onCheckedChange={() => setPolicy(v => !v)} className=\"mt-[2px] border-[#1d1d1f]\" />\n <label\n className=\"cursor-pointer text-left text-[14px] text-[#1e2024] [&_a]:underline\"\n onClick={() => setPolicy(v => !v)}\n dangerouslySetInnerHTML={{ __html: copy.policy ?? '' }}\n />\n </div>\n\n {(errorMessage || successMessage) && (\n <div\n className={cn(\n 'text-[14px] font-[700]',\n errorMessage && 'text-[#f84d4f]',\n successMessage && 'text-[#52c41a]'\n )}\n >\n <Text html={successMessage || errorMessage} />\n </div>\n )}\n\n <Button className=\"w-full\" loading={loading} onClick={handleSubmit}>\n {copy.buttonLabel ?? 'Subscribe'}\n </Button>\n </div>\n </div>\n )\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Checkbox, Text } from '@anker-in/headless-ui'\nimport { gaTrack, classNames as cn, useHeadlessContext } from '@anker-in/lib'\nimport Cookies from 'js-cookie'\nimport { parse } from 'query-string'\nimport { emailValidate } from '../../../credits/context/utils'\nimport { useMemberPopupContext } from '../../context/provider'\nimport type { SubscribeModalCopy } from '../../type'\nimport { ROUNDED_BRANDS } from '../../../../constants'\n\ntype Props = {\n copy: SubscribeModalCopy\n email?: string\n onClose: () => void\n}\n\nfunction getAdCookie() {\n if (typeof window === 'undefined') return { register_source: '' }\n const { search, href } = window.location\n const query = parse(search)\n return {\n fbuy_ref_code: Cookies.get('fbuy_ref_code'),\n ref: Cookies.get('ref_ads'),\n inviter_code: query.ic ?? query.inviter_code ?? Cookies.get('inviter_code'),\n register_source: query.redirect ?? Cookies.get('reg_source') ?? href,\n }\n}\n\nexport default function SubscribeEmailPanel({ copy, email: initialEmail, onClose }: Props) {\n const { alpcConfig, setIsSubscribeSuccess, fetchCreditInfo, profile } = useMemberPopupContext()\n const { brand, locale } = alpcConfig\n const { brand: headlessBrand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(headlessBrand)\n const [policy, setPolicy] = useState(copy.policyDefaultChecked ?? false)\n const [email, setEmail] = useState(initialEmail ?? '')\n const [errorMessage, setErrorMessage] = useState('')\n const [successMessage, setSuccessMessage] = useState('')\n const [loading, setLoading] = useState(false)\n\n useEffect(() => {\n if (initialEmail) setEmail(initialEmail)\n }, [initialEmail])\n\n const handleSubmit = useCallback(async () => {\n setErrorMessage('')\n if (!email) return setErrorMessage('Please fill in your email')\n if (!emailValidate(email)) return setErrorMessage('Invalid email address')\n if (!policy) return setErrorMessage('Please agree to the policy')\n\n setLoading(true)\n const { register_source } = getAdCookie()\n try {\n const response = await fetch('/api/multipass/subscribe/subscribe_emails', {\n method: 'POST',\n credentials: 'include',\n headers: { 'Content-Type': 'application/json', 'current-language': locale },\n body: JSON.stringify({\n email,\n register_source,\n brand,\n deals_type: copy.dealsType ?? 'vip_subscribe',\n }),\n })\n const result = await response.json()\n if (!result.errors) {\n setSuccessMessage(copy.successTips ?? 'Subscribed successfully!')\n setIsSubscribeSuccess(true)\n if (profile?.user_id) setTimeout(() => fetchCreditInfo(profile.user_id), 3000)\n gaTrack({\n event: 'ga4Event',\n event_name: 'subscribe',\n event_parameters: {\n page_group: copy.dealsType ?? '',\n position: 'sticky',\n info: '',\n },\n })\n setTimeout(() => {\n setSuccessMessage('')\n onClose()\n }, 3000)\n } else {\n setErrorMessage(result.errors ?? 'Error occurred')\n }\n } catch {\n setErrorMessage('Network error')\n } finally {\n setLoading(false)\n }\n }, [email, policy, locale, brand, copy, onClose, setIsSubscribeSuccess])\n\n return (\n <div className=\"flex flex-col gap-[12px]\">\n <div className=\"flex flex-col gap-[8px]\">\n {copy.title && <h2 className=\"text-[24px] font-[700] leading-[1.2] text-[#080a0f]\">{copy.title}</h2>}\n {copy.desc && <Text className=\"text-[16px] text-[#1e2024]\" html={copy.desc} />}\n </div>\n\n <div className=\"flex flex-col gap-[16px]\">\n <input\n className={cn(\n 'h-[46px] w-full border px-[14px] text-[16px] outline-none placeholder:text-[#999]',\n errorMessage ? 'border-[#f84d4f]' : 'border-[#d8d8d8]',\n rounded ? 'rounded-[4px]' : 'rounded-none'\n )}\n placeholder={copy.placeholder}\n value={email}\n onChange={e => {\n setErrorMessage('')\n setEmail(e.target.value.trim())\n }}\n />\n\n <div className=\"flex w-full items-start gap-[8px]\">\n <Checkbox checked={policy} onCheckedChange={() => setPolicy(v => !v)} className=\"mt-[2px] border-[#1d1d1f]\" />\n <label\n className=\"cursor-pointer text-left text-[14px] text-[#1e2024] [&_a]:underline\"\n onClick={() => setPolicy(v => !v)}\n dangerouslySetInnerHTML={{ __html: copy.policy ?? '' }}\n />\n </div>\n\n {(errorMessage || successMessage) && (\n <div\n className={cn(\n 'text-[14px] font-[700]',\n errorMessage && 'text-[#f84d4f]',\n successMessage && 'text-[#52c41a]'\n )}\n >\n <Text html={successMessage || errorMessage} />\n </div>\n )}\n\n <Button className=\"w-full\" loading={loading} onClick={handleSubmit}>\n {copy.buttonLabel ?? 'Subscribe'}\n </Button>\n </div>\n </div>\n )\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["jsx", "jsxs", "useCallback", "useEffect", "useState", "Button", "Checkbox", "Text", "gaTrack", "cn", "useHeadlessContext", "Cookies", "parse", "emailValidate", "useMemberPopupContext", "ROUNDED_BRANDS", "getAdCookie", "search", "href", "query", "SubscribeEmailPanel", "copy", "initialEmail", "onClose", "alpcConfig", "setIsSubscribeSuccess", "fetchCreditInfo", "profile", "brand", "locale", "headlessBrand", "rounded", "policy", "setPolicy", "email", "setEmail", "errorMessage", "setErrorMessage", "successMessage", "setSuccessMessage", "loading", "setLoading", "handleSubmit", "register_source", "result", "e", "v"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{useCallback as C,useEffect as h,useState as o}from"react";import A from"swr/mutation";import{getAlpcPath as P}from"../../../../credits/context/utils";function S({userId:e,brand:i,apiBaseUrl:l,locale:a=""},{page:t,pageSize:c}){const[g,d]=o([]),[u,y]=o(0),[p,v]=o(0),{isMutating:s,trigger:f}=A("/v1/credit/log",async(n,{arg:r})=>(await fetch(P(a,l)+n,{method:"POST",headers:{"Content-Type":"application/json","current-language":a},body:JSON.stringify(r)})).json()),m=C(async()=>{await f({page:t,page_size:c,user_id:e,brand:i},{onSuccess(n){v(t),y(n?.data?.total??0),d(r=>r.concat(n?.data?.creditLogs??[]))}})},[t,c,e,i,f]);return h(()=>{!e||!i||s||t===p||m()},[m,e,i,t,p,s]),{activities:g,isLoading:s,total:u,canNext:u>g.length&&!s}}var U=S;export{U as default};
1
+ import{useCallback as C,useEffect as h,useState as o}from"react";import A from"swr/mutation";import{getAlpcPath as P}from"../../../../credits/context/utils";function S({userId:e,brand:i,apiBaseUrl:d,locale:c=""},{page:t,pageSize:a}){const[g,m]=o([]),[u,y]=o(0),[p,v]=o(0),{isMutating:s,trigger:f}=A("/v1/credit/log",async(n,{arg:r})=>(await fetch(P(c,d)+n,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json","current-language":c},body:JSON.stringify(r)})).json()),l=C(async()=>{await f({page:t,page_size:a,user_id:e,brand:i},{onSuccess(n){v(t),y(n?.data?.total??0),m(r=>r.concat(n?.data?.creditLogs??[]))}})},[t,a,e,i,f]);return h(()=>{!e||!i||s||t===p||l()},[l,e,i,t,p,s]),{activities:g,isLoading:s,total:u,canNext:u>g.length&&!s}}var U=S;export{U as default};
2
2
  //# sourceMappingURL=useActivities.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/components/memberPopup/panels/EarnCredits/hooks/useActivities.ts"],
4
- "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport useSWRMutation from 'swr/mutation'\nimport { getAlpcPath } from '../../../../credits/context/utils'\nimport type { CreditLogResponse } from '../../../../credits/context/response'\n\ntype UseActivitiesConfig = {\n userId: string | undefined\n brand: string\n apiBaseUrl?: string\n locale?: string\n}\n\ntype Params = {\n page: number\n pageSize: number\n}\n\nfunction useActivities(\n { userId, brand, apiBaseUrl, locale = '' }: UseActivitiesConfig,\n { page, pageSize }: Params\n) {\n const [activities, setActivities] = useState<CreditLogResponse[]>([])\n const [total, setTotal] = useState(0)\n const [currentPage, setCurrentPage] = useState(0)\n\n const { isMutating: isLoading, trigger } = useSWRMutation(\n `/v1/credit/log`,\n async (url: string, { arg }: { arg: Record<string, any> }) => {\n const response = await fetch(getAlpcPath(locale, apiBaseUrl) + url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', 'current-language': locale },\n body: JSON.stringify(arg),\n })\n return response.json()\n }\n )\n\n const fetchActivities = useCallback(async () => {\n await trigger(\n { page, page_size: pageSize, user_id: userId, brand },\n {\n onSuccess(data) {\n setCurrentPage(page)\n setTotal(data?.data?.total ?? 0)\n setActivities(prev => prev.concat(data?.data?.creditLogs ?? []))\n },\n }\n )\n }, [page, pageSize, userId, brand, trigger])\n\n useEffect(() => {\n if (!userId || !brand || isLoading || page === currentPage) return\n fetchActivities()\n }, [fetchActivities, userId, brand, page, currentPage, isLoading])\n\n return {\n activities,\n isLoading,\n total,\n canNext: total > activities.length && !isLoading,\n }\n}\n\nexport default useActivities\n"],
5
- "mappings": "AAAA,OAAS,eAAAA,EAAa,aAAAC,EAAW,YAAAC,MAAgB,QACjD,OAAOC,MAAoB,eAC3B,OAAS,eAAAC,MAAmB,oCAe5B,SAASC,EACP,CAAE,OAAAC,EAAQ,MAAAC,EAAO,WAAAC,EAAY,OAAAC,EAAS,EAAG,EACzC,CAAE,KAAAC,EAAM,SAAAC,CAAS,EACjB,CACA,KAAM,CAACC,EAAYC,CAAa,EAAIX,EAA8B,CAAC,CAAC,EAC9D,CAACY,EAAOC,CAAQ,EAAIb,EAAS,CAAC,EAC9B,CAACc,EAAaC,CAAc,EAAIf,EAAS,CAAC,EAE1C,CAAE,WAAYgB,EAAW,QAAAC,CAAQ,EAAIhB,EACzC,iBACA,MAAOiB,EAAa,CAAE,IAAAC,CAAI,KACP,MAAM,MAAMjB,EAAYK,EAAQD,CAAU,EAAIY,EAAK,CAClE,OAAQ,OACR,QAAS,CAAE,eAAgB,mBAAoB,mBAAoBX,CAAO,EAC1E,KAAM,KAAK,UAAUY,CAAG,CAC1B,CAAC,GACe,KAAK,CAEzB,EAEMC,EAAkBtB,EAAY,SAAY,CAC9C,MAAMmB,EACJ,CAAE,KAAAT,EAAM,UAAWC,EAAU,QAASL,EAAQ,MAAAC,CAAM,EACpD,CACE,UAAUgB,EAAM,CACdN,EAAeP,CAAI,EACnBK,EAASQ,GAAM,MAAM,OAAS,CAAC,EAC/BV,EAAcW,GAAQA,EAAK,OAAOD,GAAM,MAAM,YAAc,CAAC,CAAC,CAAC,CACjE,CACF,CACF,CACF,EAAG,CAACb,EAAMC,EAAUL,EAAQC,EAAOY,CAAO,CAAC,EAE3C,OAAAlB,EAAU,IAAM,CACV,CAACK,GAAU,CAACC,GAASW,GAAaR,IAASM,GAC/CM,EAAgB,CAClB,EAAG,CAACA,EAAiBhB,EAAQC,EAAOG,EAAMM,EAAaE,CAAS,CAAC,EAE1D,CACL,WAAAN,EACA,UAAAM,EACA,MAAAJ,EACA,QAASA,EAAQF,EAAW,QAAU,CAACM,CACzC,CACF,CAEA,IAAOO,EAAQpB",
4
+ "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport useSWRMutation from 'swr/mutation'\nimport { getAlpcPath } from '../../../../credits/context/utils'\nimport type { CreditLogResponse } from '../../../../credits/context/response'\n\ntype UseActivitiesConfig = {\n userId: string | undefined\n brand: string\n apiBaseUrl?: string\n locale?: string\n}\n\ntype Params = {\n page: number\n pageSize: number\n}\n\nfunction useActivities(\n { userId, brand, apiBaseUrl, locale = '' }: UseActivitiesConfig,\n { page, pageSize }: Params\n) {\n const [activities, setActivities] = useState<CreditLogResponse[]>([])\n const [total, setTotal] = useState(0)\n const [currentPage, setCurrentPage] = useState(0)\n\n const { isMutating: isLoading, trigger } = useSWRMutation(\n `/v1/credit/log`,\n async (url: string, { arg }: { arg: Record<string, any> }) => {\n const response = await fetch(getAlpcPath(locale, apiBaseUrl) + url, {\n method: 'POST',\n credentials: 'include',\n headers: { 'Content-Type': 'application/json', 'current-language': locale },\n body: JSON.stringify(arg),\n })\n return response.json()\n }\n )\n\n const fetchActivities = useCallback(async () => {\n await trigger(\n { page, page_size: pageSize, user_id: userId, brand },\n {\n onSuccess(data) {\n setCurrentPage(page)\n setTotal(data?.data?.total ?? 0)\n setActivities(prev => prev.concat(data?.data?.creditLogs ?? []))\n },\n }\n )\n }, [page, pageSize, userId, brand, trigger])\n\n useEffect(() => {\n if (!userId || !brand || isLoading || page === currentPage) return\n fetchActivities()\n }, [fetchActivities, userId, brand, page, currentPage, isLoading])\n\n return {\n activities,\n isLoading,\n total,\n canNext: total > activities.length && !isLoading,\n }\n}\n\nexport default useActivities\n"],
5
+ "mappings": "AAAA,OAAS,eAAAA,EAAa,aAAAC,EAAW,YAAAC,MAAgB,QACjD,OAAOC,MAAoB,eAC3B,OAAS,eAAAC,MAAmB,oCAe5B,SAASC,EACP,CAAE,OAAAC,EAAQ,MAAAC,EAAO,WAAAC,EAAY,OAAAC,EAAS,EAAG,EACzC,CAAE,KAAAC,EAAM,SAAAC,CAAS,EACjB,CACA,KAAM,CAACC,EAAYC,CAAa,EAAIX,EAA8B,CAAC,CAAC,EAC9D,CAACY,EAAOC,CAAQ,EAAIb,EAAS,CAAC,EAC9B,CAACc,EAAaC,CAAc,EAAIf,EAAS,CAAC,EAE1C,CAAE,WAAYgB,EAAW,QAAAC,CAAQ,EAAIhB,EACzC,iBACA,MAAOiB,EAAa,CAAE,IAAAC,CAAI,KACL,MAAM,MAAMjB,EAAYK,EAAQD,CAAU,EAAIY,EAAK,CAClE,OAAQ,OACR,YAAa,UACb,QAAS,CAAE,eAAgB,mBAAoB,mBAAoBX,CAAO,EAC5E,KAAM,KAAK,UAAUY,CAAG,CAC1B,CAAC,GACe,KAAK,CAEzB,EAEMC,EAAkBtB,EAAY,SAAY,CAC9C,MAAMmB,EACJ,CAAE,KAAAT,EAAM,UAAWC,EAAU,QAASL,EAAQ,MAAAC,CAAM,EACpD,CACE,UAAUgB,EAAM,CACdN,EAAeP,CAAI,EACnBK,EAASQ,GAAM,MAAM,OAAS,CAAC,EAC/BV,EAAcW,GAAQA,EAAK,OAAOD,GAAM,MAAM,YAAc,CAAC,CAAC,CAAC,CACjE,CACF,CACF,CACF,EAAG,CAACb,EAAMC,EAAUL,EAAQC,EAAOY,CAAO,CAAC,EAE3C,OAAAlB,EAAU,IAAM,CACV,CAACK,GAAU,CAACC,GAASW,GAAaR,IAASM,GAC/CM,EAAgB,CAClB,EAAG,CAACA,EAAiBhB,EAAQC,EAAOG,EAAMM,EAAaE,CAAS,CAAC,EAE1D,CACL,WAAAN,EACA,UAAAM,EACA,MAAAJ,EACA,QAASA,EAAQF,EAAW,QAAU,CAACM,CACzC,CACF,CAEA,IAAOO,EAAQpB",
6
6
  "names": ["useCallback", "useEffect", "useState", "useSWRMutation", "getAlpcPath", "useActivities", "userId", "brand", "apiBaseUrl", "locale", "page", "pageSize", "activities", "setActivities", "total", "setTotal", "currentPage", "setCurrentPage", "isLoading", "trigger", "url", "arg", "fetchActivities", "data", "prev", "useActivities_default"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{useMemo as b}from"react";import{useSubscriptions as p}from"@anker-in/lib";import{TaskSubType as a}from"../../../../credits/context/const";import f from"./useActivities";function l({userId:n,brand:r,email:u,locale:o="",apiBaseUrl:c}){const{activities:i}=f({userId:n,brand:r,apiBaseUrl:c,locale:o},{page:1,pageSize:50}),{data:t}=p({email:u}),s=t?.data||t;return b(()=>s?.preference?s.preference.some(e=>e.brand===r&&e.subscribe)?!0:i?.some(e=>e.task_sub_type===a.Subscription):!1,[s?.preference,i,r])}export{l as useSubscribed};
1
+ import{useMemo as b}from"react";import{useSubscriptions as f}from"@anker-in/lib";import{TaskSubType as p}from"../../../../credits/context/const";import a from"./useActivities";function l({userId:u,brand:r,email:o,locale:c="",apiBaseUrl:i}){const{activities:t}=a({userId:u,brand:r,apiBaseUrl:i,locale:c},{page:1,pageSize:50}),{data:n}=f({email:o,baseUrl:i}),s=n?.data||n;return b(()=>s?.preference?s.preference.some(e=>e.brand===r&&e.subscribe)?!0:t?.some(e=>e.task_sub_type===p.Subscription):!1,[s?.preference,t,r])}export{l as useSubscribed};
2
2
  //# sourceMappingURL=useSubscribed.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/components/memberPopup/panels/EarnCredits/hooks/useSubscribed.ts"],
4
- "sourcesContent": ["import { useMemo } from 'react'\nimport { useSubscriptions } from '@anker-in/lib'\nimport { TaskSubType } from '../../../../credits/context/const'\nimport useActivities from './useActivities'\n\ntype UseSubscribedConfig = {\n userId: string | undefined\n brand: string\n email: string | undefined\n locale?: string\n apiBaseUrl?: string\n}\n\nexport function useSubscribed({ userId, brand, email, locale = '', apiBaseUrl }: UseSubscribedConfig) {\n const { activities } = useActivities(\n { userId, brand, apiBaseUrl, locale },\n { page: 1, pageSize: 50 }\n )\n const { data: subscription } = useSubscriptions({ email })\n const subscriptionData = subscription?.data || subscription\n\n return useMemo(() => {\n if (!subscriptionData?.preference) {\n return false\n }\n const subscribedByPreference = subscriptionData.preference.some(\n (item: any) => item.brand === brand && item.subscribe\n )\n if (subscribedByPreference) return true\n return activities?.some(item => item.task_sub_type === TaskSubType.Subscription)\n }, [subscriptionData?.preference, activities, brand])\n}\n"],
5
- "mappings": "AAAA,OAAS,WAAAA,MAAe,QACxB,OAAS,oBAAAC,MAAwB,gBACjC,OAAS,eAAAC,MAAmB,oCAC5B,OAAOC,MAAmB,kBAUnB,SAASC,EAAc,CAAE,OAAAC,EAAQ,MAAAC,EAAO,MAAAC,EAAO,OAAAC,EAAS,GAAI,WAAAC,CAAW,EAAwB,CACpG,KAAM,CAAE,WAAAC,CAAW,EAAIP,EACrB,CAAE,OAAAE,EAAQ,MAAAC,EAAO,WAAAG,EAAY,OAAAD,CAAO,EACpC,CAAE,KAAM,EAAG,SAAU,EAAG,CAC1B,EACM,CAAE,KAAMG,CAAa,EAAIV,EAAiB,CAAE,MAAAM,CAAM,CAAC,EACnDK,EAAmBD,GAAc,MAAQA,EAE/C,OAAOX,EAAQ,IACRY,GAAkB,WAGQA,EAAiB,WAAW,KACxDC,GAAcA,EAAK,QAAUP,GAASO,EAAK,SAC9C,EACmC,GAC5BH,GAAY,KAAKG,GAAQA,EAAK,gBAAkBX,EAAY,YAAY,EANtE,GAOR,CAACU,GAAkB,WAAYF,EAAYJ,CAAK,CAAC,CACtD",
4
+ "sourcesContent": ["import { useMemo } from 'react'\nimport { useSubscriptions } from '@anker-in/lib'\nimport { TaskSubType } from '../../../../credits/context/const'\nimport useActivities from './useActivities'\n\ntype UseSubscribedConfig = {\n userId: string | undefined\n brand: string\n email: string | undefined\n locale?: string\n apiBaseUrl?: string\n}\n\nexport function useSubscribed({ userId, brand, email, locale = '', apiBaseUrl }: UseSubscribedConfig) {\n const { activities } = useActivities(\n { userId, brand, apiBaseUrl, locale },\n { page: 1, pageSize: 50 }\n )\n const { data: subscription } = useSubscriptions({ email, baseUrl: apiBaseUrl })\n const subscriptionData = subscription?.data || subscription\n\n return useMemo(() => {\n if (!subscriptionData?.preference) {\n return false\n }\n const subscribedByPreference = subscriptionData.preference.some(\n (item: any) => item.brand === brand && item.subscribe\n )\n if (subscribedByPreference) return true\n return activities?.some(item => item.task_sub_type === TaskSubType.Subscription)\n }, [subscriptionData?.preference, activities, brand])\n}\n"],
5
+ "mappings": "AAAA,OAAS,WAAAA,MAAe,QACxB,OAAS,oBAAAC,MAAwB,gBACjC,OAAS,eAAAC,MAAmB,oCAC5B,OAAOC,MAAmB,kBAUnB,SAASC,EAAc,CAAE,OAAAC,EAAQ,MAAAC,EAAO,MAAAC,EAAO,OAAAC,EAAS,GAAI,WAAAC,CAAW,EAAwB,CACpG,KAAM,CAAE,WAAAC,CAAW,EAAIP,EACrB,CAAE,OAAAE,EAAQ,MAAAC,EAAO,WAAAG,EAAY,OAAAD,CAAO,EACpC,CAAE,KAAM,EAAG,SAAU,EAAG,CAC1B,EACM,CAAE,KAAMG,CAAa,EAAIV,EAAiB,CAAE,MAAAM,EAAO,QAASE,CAAW,CAAC,EACxEG,EAAmBD,GAAc,MAAQA,EAE/C,OAAOX,EAAQ,IACRY,GAAkB,WAGQA,EAAiB,WAAW,KACxDC,GAAcA,EAAK,QAAUP,GAASO,EAAK,SAC9C,EACmC,GAC5BH,GAAY,KAAKG,GAAQA,EAAK,gBAAkBX,EAAY,YAAY,EANtE,GAOR,CAACU,GAAkB,WAAYF,EAAYJ,CAAK,CAAC,CACtD",
6
6
  "names": ["useMemo", "useSubscriptions", "TaskSubType", "useActivities", "useSubscribed", "userId", "brand", "email", "locale", "apiBaseUrl", "activities", "subscription", "subscriptionData", "item"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{useCallback as f,useState as o}from"react";function c({locale:n="",appName:s=""}={}){const[i,a]=o(!1),[l,r]=o(null);return{updateProfile:f(async u=>{a(!0),r(null);try{const e=await fetch("/api/multipass/account/users/update_profile",{method:"PUT",headers:{"Content-Type":"application/json","current-language":n},body:JSON.stringify({app:s,...u})}),t=await e.json();return e.ok&&!t.error?!0:(r(t?.error?.message||t?.error||"Update failed"),!1)}catch(e){return r(e?.message??"Unknown error"),!1}finally{a(!1)}},[n,s]),isLoading:i,error:l}}export{c as useUpdateProfile};
1
+ import{useCallback as f,useState as o}from"react";function g({locale:n="",appName:s=""}={}){const[i,a]=o(!1),[l,r]=o(null);return{updateProfile:f(async u=>{a(!0),r(null);try{const e=await fetch("/api/multipass/account/users/update_profile",{method:"PUT",credentials:"include",headers:{"Content-Type":"application/json","current-language":n},body:JSON.stringify({app:s,...u})}),t=await e.json();return e.ok&&!t.error?!0:(r(t?.error?.message||t?.error||"Update failed"),!1)}catch(e){return r(e?.message??"Unknown error"),!1}finally{a(!1)}},[n,s]),isLoading:i,error:l}}export{g as useUpdateProfile};
2
2
  //# sourceMappingURL=useUpdateProfile.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.ts"],
4
- "sourcesContent": ["import { useCallback, useState } from 'react'\n\ntype UseUpdateProfileConfig = {\n locale?: string\n appName?: string\n}\n\ntype ProfileData = {\n first_name?: string\n last_name?: string\n phone_number?: string\n country?: string\n dob?: string\n}\n\nexport function useUpdateProfile({ locale = '', appName = '' }: UseUpdateProfileConfig = {}) {\n const [isLoading, setIsLoading] = useState(false)\n const [error, setError] = useState<string | null>(null)\n\n const updateProfile = useCallback(\n async (data: ProfileData): Promise<boolean> => {\n setIsLoading(true)\n setError(null)\n try {\n const response = await fetch('/api/multipass/account/users/update_profile', {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'current-language': locale,\n },\n body: JSON.stringify({ app: appName, ...data }),\n })\n const result = await response.json()\n if (response.ok && !result.error) {\n return true\n }\n setError(result?.error?.message || result?.error || 'Update failed')\n return false\n } catch (e: any) {\n setError(e?.message ?? 'Unknown error')\n return false\n } finally {\n setIsLoading(false)\n }\n },\n [locale, appName]\n )\n\n return { updateProfile, isLoading, error }\n}\n"],
5
- "mappings": "AAAA,OAAS,eAAAA,EAAa,YAAAC,MAAgB,QAe/B,SAASC,EAAiB,CAAE,OAAAC,EAAS,GAAI,QAAAC,EAAU,EAAG,EAA4B,CAAC,EAAG,CAC3F,KAAM,CAACC,EAAWC,CAAY,EAAIL,EAAS,EAAK,EAC1C,CAACM,EAAOC,CAAQ,EAAIP,EAAwB,IAAI,EA+BtD,MAAO,CAAE,cA7BaD,EACpB,MAAOS,GAAwC,CAC7CH,EAAa,EAAI,EACjBE,EAAS,IAAI,EACb,GAAI,CACF,MAAME,EAAW,MAAM,MAAM,8CAA+C,CAC1E,OAAQ,MACR,QAAS,CACP,eAAgB,mBAChB,mBAAoBP,CACtB,EACA,KAAM,KAAK,UAAU,CAAE,IAAKC,EAAS,GAAGK,CAAK,CAAC,CAChD,CAAC,EACKE,EAAS,MAAMD,EAAS,KAAK,EACnC,OAAIA,EAAS,IAAM,CAACC,EAAO,MAClB,IAETH,EAASG,GAAQ,OAAO,SAAWA,GAAQ,OAAS,eAAe,EAC5D,GACT,OAAS,EAAQ,CACf,OAAAH,EAAS,GAAG,SAAW,eAAe,EAC/B,EACT,QAAE,CACAF,EAAa,EAAK,CACpB,CACF,EACA,CAACH,EAAQC,CAAO,CAClB,EAEwB,UAAAC,EAAW,MAAAE,CAAM,CAC3C",
4
+ "sourcesContent": ["import { useCallback, useState } from 'react'\n\ntype UseUpdateProfileConfig = {\n locale?: string\n appName?: string\n}\n\ntype ProfileData = {\n first_name?: string\n last_name?: string\n phone_number?: string\n country?: string\n dob?: string\n}\n\nexport function useUpdateProfile({ locale = '', appName = '' }: UseUpdateProfileConfig = {}) {\n const [isLoading, setIsLoading] = useState(false)\n const [error, setError] = useState<string | null>(null)\n\n const updateProfile = useCallback(\n async (data: ProfileData): Promise<boolean> => {\n setIsLoading(true)\n setError(null)\n try {\n const response = await fetch('/api/multipass/account/users/update_profile', {\n method: 'PUT',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'current-language': locale,\n },\n body: JSON.stringify({ app: appName, ...data }),\n })\n const result = await response.json()\n if (response.ok && !result.error) {\n return true\n }\n setError(result?.error?.message || result?.error || 'Update failed')\n return false\n } catch (e: any) {\n setError(e?.message ?? 'Unknown error')\n return false\n } finally {\n setIsLoading(false)\n }\n },\n [locale, appName]\n )\n\n return { updateProfile, isLoading, error }\n}\n"],
5
+ "mappings": "AAAA,OAAS,eAAAA,EAAa,YAAAC,MAAgB,QAe/B,SAASC,EAAiB,CAAE,OAAAC,EAAS,GAAI,QAAAC,EAAU,EAAG,EAA4B,CAAC,EAAG,CAC3F,KAAM,CAACC,EAAWC,CAAY,EAAIL,EAAS,EAAK,EAC1C,CAACM,EAAOC,CAAQ,EAAIP,EAAwB,IAAI,EAgCtD,MAAO,CAAE,cA9BaD,EACpB,MAAOS,GAAwC,CAC7CH,EAAa,EAAI,EACjBE,EAAS,IAAI,EACb,GAAI,CACF,MAAME,EAAW,MAAM,MAAM,8CAA+C,CAC1E,OAAQ,MACR,YAAa,UACb,QAAS,CACP,eAAgB,mBAChB,mBAAoBP,CACtB,EACA,KAAM,KAAK,UAAU,CAAE,IAAKC,EAAS,GAAGK,CAAK,CAAC,CAChD,CAAC,EACKE,EAAS,MAAMD,EAAS,KAAK,EACnC,OAAIA,EAAS,IAAM,CAACC,EAAO,MAClB,IAETH,EAASG,GAAQ,OAAO,SAAWA,GAAQ,OAAS,eAAe,EAC5D,GACT,OAAS,EAAQ,CACf,OAAAH,EAAS,GAAG,SAAW,eAAe,EAC/B,EACT,QAAE,CACAF,EAAa,EAAK,CACpB,CACF,EACA,CAACH,EAAQC,CAAO,CAClB,EAEwB,UAAAC,EAAW,MAAAE,CAAM,CAC3C",
6
6
  "names": ["useCallback", "useState", "useUpdateProfile", "locale", "appName", "isLoading", "setIsLoading", "error", "setError", "data", "response", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import l from"swr";import{useMemberPopupContext as p}from"../../../context/provider";function v(){const{profile:r,alpcConfig:a}=p(),o=!!r?"/api/multipass/mktsrv/v1/referral/reward/overview/cash":null,s=async i=>{const e=await fetch(i,{method:"GET",headers:{"Content-Type":"application/json","current-language":a.locale}});if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return e.json()},{data:n,isLoading:t}=l(o,s,{revalidateOnFocus:!1});return{isLoading:t,data:n}}export{v as useReferralOverview};
1
+ import l from"swr";import{useMemberPopupContext as p}from"../../../context/provider";function v(){const{profile:r,alpcConfig:a}=p(),n=!!r?"/api/multipass/mktsrv/v1/referral/reward/overview/cash":null,o=async i=>{const e=await fetch(i,{method:"GET",credentials:"include",headers:{"Content-Type":"application/json","current-language":a.locale}});if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return e.json()},{data:s,isLoading:t}=l(n,o,{revalidateOnFocus:!1});return{isLoading:t,data:s}}export{v as useReferralOverview};
2
2
  //# sourceMappingURL=useReferralOverview.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/components/memberPopup/panels/Referral/hooks/useReferralOverview.ts"],
4
- "sourcesContent": ["import useSWR from 'swr'\nimport { useMemberPopupContext } from '../../../context/provider'\n\nexport type ReferralRewardOverviewResponse = {\n data: {\n data: {\n available: number\n pending: number\n }\n }\n}\n\nexport function useReferralOverview(): {\n isLoading: boolean\n data?: ReferralRewardOverviewResponse\n} {\n const { profile, alpcConfig } = useMemberPopupContext()\n const isLogin = !!profile\n\n const swrKey = isLogin ? `/api/multipass/mktsrv/v1/referral/reward/overview/cash` : null\n\n const swrFetcher = async (url: string) => {\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'current-language': alpcConfig.locale,\n },\n })\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`)\n }\n return response.json()\n }\n\n const { data, isLoading } = useSWR<ReferralRewardOverviewResponse>(swrKey, swrFetcher, {\n revalidateOnFocus: false,\n })\n\n return { isLoading, data }\n}\n"],
5
- "mappings": "AAAA,OAAOA,MAAY,MACnB,OAAS,yBAAAC,MAA6B,4BAW/B,SAASC,GAGd,CACA,KAAM,CAAE,QAAAC,EAAS,WAAAC,CAAW,EAAIH,EAAsB,EAGhDI,EAFU,CAAC,CAACF,EAEO,yDAA2D,KAE9EG,EAAa,MAAOC,GAAgB,CACxC,MAAMC,EAAW,MAAM,MAAMD,EAAK,CAChC,OAAQ,MACR,QAAS,CACP,eAAgB,mBAChB,mBAAoBH,EAAW,MACjC,CACF,CAAC,EACD,GAAI,CAACI,EAAS,GACZ,MAAM,IAAI,MAAM,uBAAuBA,EAAS,MAAM,EAAE,EAE1D,OAAOA,EAAS,KAAK,CACvB,EAEM,CAAE,KAAAC,EAAM,UAAAC,CAAU,EAAIV,EAAuCK,EAAQC,EAAY,CACrF,kBAAmB,EACrB,CAAC,EAED,MAAO,CAAE,UAAAI,EAAW,KAAAD,CAAK,CAC3B",
4
+ "sourcesContent": ["import useSWR from 'swr'\nimport { useMemberPopupContext } from '../../../context/provider'\n\nexport type ReferralRewardOverviewResponse = {\n data: {\n data: {\n available: number\n pending: number\n }\n }\n}\n\nexport function useReferralOverview(): {\n isLoading: boolean\n data?: ReferralRewardOverviewResponse\n} {\n const { profile, alpcConfig } = useMemberPopupContext()\n const isLogin = !!profile\n\n const swrKey = isLogin ? `/api/multipass/mktsrv/v1/referral/reward/overview/cash` : null\n\n const swrFetcher = async (url: string) => {\n const response = await fetch(url, {\n method: 'GET',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'current-language': alpcConfig.locale,\n },\n })\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`)\n }\n return response.json()\n }\n\n const { data, isLoading } = useSWR<ReferralRewardOverviewResponse>(swrKey, swrFetcher, {\n revalidateOnFocus: false,\n })\n\n return { isLoading, data }\n}\n"],
5
+ "mappings": "AAAA,OAAOA,MAAY,MACnB,OAAS,yBAAAC,MAA6B,4BAW/B,SAASC,GAGd,CACA,KAAM,CAAE,QAAAC,EAAS,WAAAC,CAAW,EAAIH,EAAsB,EAGhDI,EAFU,CAAC,CAACF,EAEO,yDAA2D,KAE9EG,EAAa,MAAOC,GAAgB,CACxC,MAAMC,EAAW,MAAM,MAAMD,EAAK,CAChC,OAAQ,MACR,YAAa,UACb,QAAS,CACP,eAAgB,mBAChB,mBAAoBH,EAAW,MACjC,CACF,CAAC,EACD,GAAI,CAACI,EAAS,GACZ,MAAM,IAAI,MAAM,uBAAuBA,EAAS,MAAM,EAAE,EAE1D,OAAOA,EAAS,KAAK,CACvB,EAEM,CAAE,KAAAC,EAAM,UAAAC,CAAU,EAAIV,EAAuCK,EAAQC,EAAY,CACrF,kBAAmB,EACrB,CAAC,EAED,MAAO,CAAE,UAAAI,EAAW,KAAAD,CAAK,CAC3B",
6
6
  "names": ["useSWR", "useMemberPopupContext", "useReferralOverview", "profile", "alpcConfig", "swrKey", "swrFetcher", "url", "response", "data", "isLoading"]
7
7
  }