@anker-in/campaign-ui 0.5.20 → 0.5.22
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.
- package/dist/cjs/components/credits/context/hooks/useCountries.d.ts +2 -1
- package/dist/cjs/components/credits/context/hooks/useCountries.js +1 -1
- package/dist/cjs/components/credits/context/hooks/useCountries.js.map +3 -3
- package/dist/cjs/components/credits/context/hooks/useShippingCountries.d.ts +2 -1
- package/dist/cjs/components/credits/context/hooks/useShippingCountries.js +1 -1
- package/dist/cjs/components/credits/context/hooks/useShippingCountries.js.map +3 -3
- package/dist/cjs/components/credits/context/hooks/useUploadReceipt.js +1 -1
- package/dist/cjs/components/credits/context/hooks/useUploadReceipt.js.map +2 -2
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Address.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Address.js.map +3 -3
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/index.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/index.js.map +3 -3
- package/dist/cjs/components/memberPopup/context/provider.js +1 -1
- package/dist/cjs/components/memberPopup/context/provider.js.map +2 -2
- package/dist/cjs/components/memberPopup/panels/ActivitiesSubscribePanel.js +1 -1
- package/dist/cjs/components/memberPopup/panels/ActivitiesSubscribePanel.js.map +3 -3
- package/dist/cjs/components/memberPopup/panels/EarnCredits/ActivatePanel.js +1 -1
- package/dist/cjs/components/memberPopup/panels/EarnCredits/ActivatePanel.js.map +3 -3
- package/dist/cjs/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.js +1 -1
- package/dist/cjs/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.js.map +2 -2
- package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.d.ts +2 -1
- package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.js +1 -1
- package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.js.map +3 -3
- package/dist/cjs/components/memberPopup/panels/Referral/hooks/useReferralOverview.js +1 -1
- package/dist/cjs/components/memberPopup/panels/Referral/hooks/useReferralOverview.js.map +2 -2
- package/dist/cjs/components/registration/authCodeActivate/index.js +1 -1
- package/dist/cjs/components/registration/authCodeActivate/index.js.map +3 -3
- package/dist/cjs/components/registration/context/provider.d.ts +3 -1
- package/dist/cjs/components/registration/context/provider.js +1 -1
- package/dist/cjs/components/registration/context/provider.js.map +3 -3
- package/dist/cjs/lib/registration/hooks/useEmailValidation.d.ts +1 -1
- package/dist/cjs/lib/registration/hooks/useEmailValidation.js +1 -1
- package/dist/cjs/lib/registration/hooks/useEmailValidation.js.map +3 -3
- package/dist/cjs/lib/registration/hooks/useSendEmailValidation.d.ts +1 -1
- package/dist/cjs/lib/registration/hooks/useSendEmailValidation.js +1 -1
- package/dist/cjs/lib/registration/hooks/useSendEmailValidation.js.map +3 -3
- package/dist/cjs/lib/utils/fetcher/fetcher.d.ts +1 -1
- package/dist/cjs/lib/utils/fetcher/fetcher.js +1 -1
- package/dist/cjs/lib/utils/fetcher/fetcher.js.map +3 -3
- package/dist/cjs/templates/Credits.js +1 -1
- package/dist/cjs/templates/Credits.js.map +2 -2
- package/dist/esm/components/credits/context/hooks/useCountries.d.ts +2 -1
- package/dist/esm/components/credits/context/hooks/useCountries.js +1 -1
- package/dist/esm/components/credits/context/hooks/useCountries.js.map +3 -3
- package/dist/esm/components/credits/context/hooks/useShippingCountries.d.ts +2 -1
- package/dist/esm/components/credits/context/hooks/useShippingCountries.js +1 -1
- package/dist/esm/components/credits/context/hooks/useShippingCountries.js.map +3 -3
- package/dist/esm/components/credits/context/hooks/useUploadReceipt.js +1 -1
- package/dist/esm/components/credits/context/hooks/useUploadReceipt.js.map +2 -2
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Address.js +1 -1
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Address.js.map +3 -3
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/index.js +1 -1
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/index.js.map +3 -3
- package/dist/esm/components/memberPopup/context/provider.js +1 -1
- package/dist/esm/components/memberPopup/context/provider.js.map +2 -2
- package/dist/esm/components/memberPopup/panels/ActivitiesSubscribePanel.js +1 -1
- package/dist/esm/components/memberPopup/panels/ActivitiesSubscribePanel.js.map +3 -3
- package/dist/esm/components/memberPopup/panels/EarnCredits/ActivatePanel.js +1 -1
- package/dist/esm/components/memberPopup/panels/EarnCredits/ActivatePanel.js.map +3 -3
- package/dist/esm/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.js +1 -1
- package/dist/esm/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.js.map +2 -2
- package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.d.ts +2 -1
- package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.js +1 -1
- package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.js.map +3 -3
- package/dist/esm/components/memberPopup/panels/Referral/hooks/useReferralOverview.js +1 -1
- package/dist/esm/components/memberPopup/panels/Referral/hooks/useReferralOverview.js.map +2 -2
- package/dist/esm/components/registration/authCodeActivate/index.js +1 -1
- package/dist/esm/components/registration/authCodeActivate/index.js.map +3 -3
- package/dist/esm/components/registration/context/provider.d.ts +3 -1
- package/dist/esm/components/registration/context/provider.js +1 -1
- package/dist/esm/components/registration/context/provider.js.map +3 -3
- package/dist/esm/lib/registration/hooks/useEmailValidation.d.ts +1 -1
- package/dist/esm/lib/registration/hooks/useEmailValidation.js +1 -1
- package/dist/esm/lib/registration/hooks/useEmailValidation.js.map +3 -3
- package/dist/esm/lib/registration/hooks/useSendEmailValidation.d.ts +1 -1
- package/dist/esm/lib/registration/hooks/useSendEmailValidation.js +1 -1
- package/dist/esm/lib/registration/hooks/useSendEmailValidation.js.map +3 -3
- package/dist/esm/lib/utils/fetcher/fetcher.d.ts +1 -1
- package/dist/esm/lib/utils/fetcher/fetcher.js +1 -1
- package/dist/esm/lib/utils/fetcher/fetcher.js.map +3 -3
- package/dist/esm/templates/Credits.js +1 -1
- package/dist/esm/templates/Credits.js.map +2 -2
- package/package.json +1 -1
- package/src/components/credits/context/hooks/useCountries.ts +3 -3
- package/src/components/credits/context/hooks/useShippingCountries.ts +17 -8
- package/src/components/credits/context/hooks/useUploadReceipt.tsx +2 -3
- package/src/components/credits/creditsRedeemList/RedeemProductModal/Address.tsx +3 -1
- package/src/components/credits/creditsRedeemList/RedeemProductModal/index.tsx +2 -2
- package/src/components/memberPopup/context/provider.tsx +1 -0
- package/src/components/memberPopup/panels/ActivitiesSubscribePanel.tsx +3 -3
- package/src/components/memberPopup/panels/EarnCredits/ActivatePanel.tsx +3 -3
- package/src/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.tsx +2 -2
- package/src/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.ts +4 -3
- package/src/components/memberPopup/panels/Referral/hooks/useReferralOverview.ts +1 -1
- package/src/components/registration/authCodeActivate/index.tsx +3 -3
- package/src/components/registration/context/provider.tsx +8 -1
- package/src/lib/registration/hooks/useEmailValidation.ts +3 -1
- package/src/lib/registration/hooks/useSendEmailValidation.ts +2 -1
- package/src/lib/utils/fetcher/fetcher.ts +2 -1
- package/src/templates/Credits.tsx +5 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/lib/utils/fetcher/fetcher.ts"],
|
|
4
|
-
"sourcesContent": ["import { handleFetchResponse } from './fetchResponse'\n\nexport const fetcher = async ({\n locale = 'en',\n url,\n method = 'POST',\n headers = {},\n repeatKey,\n body,\n type,\n timeout = 90000,\n}: any) => {\n // \u6DFB\u52A0\u8C37\u6B4C\u9A8C\u8BC1\n let bodyData = ''\n if (type === 'uploadFile') {\n bodyData = body\n } else {\n bodyData = body ? JSON.stringify(body) : ''\n }\n\n const controller = new AbortController()\n if (timeout) {\n // \u8D85\u65F6\u62A5\u9519\n setTimeout(() => controller.abort(), timeout)\n }\n\n const data = await fetch(url
|
|
5
|
-
"mappings": "AAAA,OAAS,uBAAAA,MAA2B,kBAE7B,MAAMC,EAAU,MAAO,CAC5B,OAAAC,EAAS,KACT,IAAAC,EACA,OAAAC,EAAS,OACT,QAAAC,EAAU,CAAC,EACX,UAAAC,EACA,KAAAC,EACA,KAAAC,EACA,QAAAC,EAAU,GACZ,IAAW,CAET,IAAIC,EAAW,GACXF,IAAS,aACXE,EAAWH,EAEXG,EAAWH,EAAO,KAAK,UAAUA,CAAI,EAAI,GAG3C,MAAMI,EAAa,IAAI,gBACnBF,GAEF,WAAW,IAAME,EAAW,MAAM,EAAGF,CAAO,EAG9C,MAAMG,EAAO,MAAM,
|
|
6
|
-
"names": ["handleFetchResponse", "fetcher", "locale", "url", "method", "headers", "repeatKey", "body", "type", "timeout", "bodyData", "controller", "data"]
|
|
4
|
+
"sourcesContent": ["import { handleFetchResponse } from './fetchResponse'\n\nexport const fetcher = async ({\n locale = 'en',\n url,\n baseUrl,\n method = 'POST',\n headers = {},\n repeatKey,\n body,\n type,\n timeout = 90000,\n}: any) => {\n // \u6DFB\u52A0\u8C37\u6B4C\u9A8C\u8BC1\n let bodyData = ''\n if (type === 'uploadFile') {\n bodyData = body\n } else {\n bodyData = body ? JSON.stringify(body) : ''\n }\n\n const controller = new AbortController()\n if (timeout) {\n // \u8D85\u65F6\u62A5\u9519\n setTimeout(() => controller.abort(), timeout)\n }\n\n const data = await fetch(`${baseUrl || ''}${url}`, {\n method,\n mode: 'cors',\n credentials: 'include',\n headers: {\n 'current-language': locale,\n ...headers,\n },\n ...(timeout && { signal: controller.signal }),\n ...(method !== 'GET' && { body: bodyData }),\n })\n return handleFetchResponse(data)\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,uBAAAA,MAA2B,kBAE7B,MAAMC,EAAU,MAAO,CAC5B,OAAAC,EAAS,KACT,IAAAC,EACA,QAAAC,EACA,OAAAC,EAAS,OACT,QAAAC,EAAU,CAAC,EACX,UAAAC,EACA,KAAAC,EACA,KAAAC,EACA,QAAAC,EAAU,GACZ,IAAW,CAET,IAAIC,EAAW,GACXF,IAAS,aACXE,EAAWH,EAEXG,EAAWH,EAAO,KAAK,UAAUA,CAAI,EAAI,GAG3C,MAAMI,EAAa,IAAI,gBACnBF,GAEF,WAAW,IAAME,EAAW,MAAM,EAAGF,CAAO,EAG9C,MAAMG,EAAO,MAAM,MAAM,GAAGT,GAAW,EAAE,GAAGD,CAAG,GAAI,CACjD,OAAAE,EACA,KAAM,OACN,YAAa,UACb,QAAS,CACP,mBAAoBH,EACpB,GAAGI,CACL,EACA,GAAII,GAAW,CAAE,OAAQE,EAAW,MAAO,EAC3C,GAAIP,IAAW,OAAS,CAAE,KAAMM,CAAS,CAC3C,CAAC,EACD,OAAOX,EAAoBa,CAAI,CACjC",
|
|
6
|
+
"names": ["handleFetchResponse", "fetcher", "locale", "url", "baseUrl", "method", "headers", "repeatKey", "body", "type", "timeout", "bodyData", "controller", "data"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Fragment as g,jsx as o,jsxs as u}from"react/jsx-runtime";import{classNames as M,HeadlessProvider as h}from"../lib";import{useEffect as T,useRef as
|
|
1
|
+
import{Fragment as g,jsx as o,jsxs as u}from"react/jsx-runtime";import{classNames as M,HeadlessProvider as h}from"../lib";import{useEffect as T,useRef as B}from"react";import{RegistrationProvider as w}from"../components/registration/context/provider";import{CreditsProvider as b,useCreditsContext as I}from"../components/credits/context/provider";import{CreditsBanner as G}from"../components/credits/creditsBanner";import{CreditsInfoCard as R}from"../components/credits/creditsInfoCard";import{CreditsBenefits as L}from"../components/credits/creditsBenefits";import{CreditsWaysToGetCredits as N}from"../components/credits/creditsWaysToGetCredits";import{CreditsAnkersolixTask as A}from"../components/credits/creditsAnkersolixTask";import{CreditsRedeemList as S}from"../components/credits/creditsRedeemList";import{CreditsGoGift as D}from"../components/credits/creditsGoGift";import{CreditsCash as F}from"../components/credits/creditsCash";import{CreditsMemberPrice as U}from"../components/credits/creditsMemberPrice";import{CreditsFaq as q}from"../components/credits/creditsFaq";import{CreditsNavigation as O}from"../components/credits/creditsNavigation";import x from"../components/credits/modal/ActivitiesModal";import W from"../components/credits/modal/RewardsModal";import{ComponentKey as i}from"./Credits.types";const E=({headlessConfig:d,pageConfig:s,userContext:p})=>{const{openMyRewardsModal:t,setOpenMyRewardsModal:n,openActivitiesModal:m,setOpenActivitiesModal:C,pageCommon:a}=I(),l=B(!1);return T(()=>{if(l.current||typeof window>"u")return;const r=new URLSearchParams(window.location.search).get("section");if(!r)return;const P=56,c=(f=0)=>{const y=document.getElementById(r);if(y){l.current=!0;const v=y.getBoundingClientRect().top+window.pageYOffset-P;window.scrollTo({top:v,behavior:"smooth"})}else f<10&&setTimeout(()=>c(f+1),300)};c()},[]),u(g,{children:[s.components[i.Navigation]&&o(O,{copy:s.components[i.Navigation]}),o("div",{className:M("bg-[#f5f5f7] leading-[1.2]"),children:s.order.map(e=>{if(e===i.Navigation)return null;const r=s.components?.[e];return r?u(g,{children:[e===i.Banner&&o(G,{copy:r,id:e}),e===i.InfoCard&&p?.profile&&o(R,{copy:r,id:e}),e===i.Benefits&&o(L,{copy:r,id:e}),e===i.WaysToGetCredits&&o(N,{copy:r,id:e,classNames:d.brand==="anker"?{subtitle:"text-white",equalCreditsText:"bg-gradient-to-r from-[#3AD1FF] to-[#008CD6] bg-clip-text text-transparent"}:{subtitle:"text-[#D1D1D1]",equalCreditsText:"text-[#F6EAD0]"}}),e===i.AnkersolixTask&&o(A,{copy:r,id:e}),e===i.RedeemList&&o(S,{copy:r,id:e}),e===i.GoGift&&o(D,{copy:r,id:e}),e===i.SpendCreditsLikeCash&&o(F,{copy:r,id:e}),e===i.MemberPrice&&o(U,{copy:r,id:e}),e===i.Faqs&&o(q,{copy:r,id:e}),e!==i.Banner&&o("div",{className:"laptop:h-16 desktop:h-[96px] lg-desktop:h-[128px] tablet:h-16 h-16"})]}):null})}),a?.activitiesModal&&o(x,{isOpen:m,data:a.activitiesModal,onClose:()=>C(!1)}),a?.rewardsModal&&o(W,{isOpen:t,data:a.rewardsModal,onClose:()=>n(!1)})]})},se=({headlessConfig:d,siteConfig:s,creditsConfig:p,userContext:t,pageConfig:n,registrationContext:m,gtm:C,cartConfig:a})=>o(h,{headlessConfig:d,children:o(w,{copy:s.registrationsSettings,email:t?.profile?.email,apiBaseUrl:t?.apiBaseUrl,children:o(b,{profile:t?.profile,removeProfile:t?.removeProfile,isLoadingProfile:t?.isLoadingProfile,openSignInPopup:m.openSignInPopup,openSignUpPopup:m.openSignUpPopup,creditInfo:t?.creditInfo,taskIdToTypeMapping:s.taskIdToTypeMapping,taskNameMapping:s.taskNameMapping,customer:t?.customer,fetchCreditInfo:t?.fetchCreditInfo,customerLoading:t?.customerLoading,gtm:C,pageCommon:n.common,memberPriceDiscount:s.memberPriceDiscount,alpcBrand:p?.alpcBrand,alpcCountry:p?.alpcCountry,cartConfig:a,apiBaseUrl:t?.apiBaseUrl,children:o(E,{headlessConfig:d,pageConfig:n,userContext:t})})})});export{se as CreditsTemplate};
|
|
2
2
|
//# sourceMappingURL=Credits.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/templates/Credits.tsx"],
|
|
4
|
-
"sourcesContent": ["import { classNames, HeadlessProvider } from '../lib'\nimport { useEffect, useRef } from 'react'\nimport { RegistrationProvider } from '../components/registration/context/provider'\nimport { CreditsProvider, useCreditsContext } from '../components/credits/context/provider'\nimport { CreditsBanner } from '../components/credits/creditsBanner'\nimport { CreditsInfoCard } from '../components/credits/creditsInfoCard'\nimport { CreditsBenefits } from '../components/credits/creditsBenefits'\nimport { CreditsWaysToGetCredits } from '../components/credits/creditsWaysToGetCredits'\nimport { CreditsAnkersolixTask } from '../components/credits/creditsAnkersolixTask'\nimport { CreditsRedeemList } from '../components/credits/creditsRedeemList'\nimport { CreditsGoGift } from '../components/credits/creditsGoGift'\nimport { CreditsCash } from '../components/credits/creditsCash'\nimport { CreditsMemberPrice } from '../components/credits/creditsMemberPrice'\nimport { CreditsFaq } from '../components/credits/creditsFaq'\nimport { CreditsNavigation } from '../components/credits/creditsNavigation'\nimport ActivitiesModal from '../components/credits/modal/ActivitiesModal'\nimport RewardsModal from '../components/credits/modal/RewardsModal'\nimport { ComponentKey } from './Credits.types'\nimport type {\n CreditsTemplateProps,\n CreditsContentProps,\n CreditsBannerCopy,\n CreditsInfoCardCopy,\n CreditsBenefitsCopy,\n CreditsWaysToGetCreditsCopy,\n CreditsAnkersolixTaskCopy,\n CreditsRedeemListCopy,\n CreditsGoGiftCopy,\n CreditsCashCopy,\n CreditsMemberPriceCopy,\n CreditsFaqCopy,\n} from './Credits.types'\n\nconst CreditsContent = ({ headlessConfig, pageConfig, userContext }: CreditsContentProps) => {\n const { openMyRewardsModal, setOpenMyRewardsModal, openActivitiesModal, setOpenActivitiesModal, pageCommon } = useCreditsContext()\n const hasScrolled = useRef(false)\n\n useEffect(() => {\n if (hasScrolled.current || typeof window === 'undefined') return\n\n const params = new URLSearchParams(window.location.search)\n const section = params.get('section')\n if (!section) return\n\n const navHeight = 56\n\n const tryScroll = (attempts = 0) => {\n const el = document.getElementById(section)\n if (el) {\n hasScrolled.current = true\n const top = el.getBoundingClientRect().top + window.pageYOffset - navHeight\n window.scrollTo({ top, behavior: 'smooth' })\n } else if (attempts < 10) {\n setTimeout(() => tryScroll(attempts + 1), 300)\n }\n }\n\n tryScroll()\n }, [])\n\n return (\n <>\n {/* \u5BFC\u822A\u7EC4\u4EF6 - \u56FA\u5B9A\u4F4D\u7F6E\uFF0C\u4E0D\u53C2\u4E0E order \u6392\u5E8F */}\n {pageConfig.components[ComponentKey.Navigation] && (\n <CreditsNavigation copy={pageConfig.components[ComponentKey.Navigation]} />\n )}\n <div className={classNames('bg-[#f5f5f7] leading-[1.2]')}>\n {pageConfig.order.map(key => {\n // \u8DF3\u8FC7\u5BFC\u822A\u7EC4\u4EF6\uFF0C\u56E0\u4E3A\u5B83\u5DF2\u7ECF\u56FA\u5B9A\u6E32\u67D3\u5728\u4E0A\u65B9\n if (key === ComponentKey.Navigation) return null\n const componentCopy = pageConfig.components?.[key]\n if (!componentCopy) return null\n return (\n <>\n {key === ComponentKey.Banner && <CreditsBanner copy={componentCopy as CreditsBannerCopy} id={key} />}\n {key === ComponentKey.InfoCard && userContext?.profile && (\n <CreditsInfoCard copy={componentCopy as CreditsInfoCardCopy} id={key} />\n )}\n {key === ComponentKey.Benefits && (\n <CreditsBenefits copy={componentCopy as CreditsBenefitsCopy} id={key} />\n )}\n {key === ComponentKey.WaysToGetCredits && (\n <CreditsWaysToGetCredits\n copy={componentCopy as CreditsWaysToGetCreditsCopy}\n id={key}\n classNames={\n headlessConfig.brand === 'anker'\n ? {\n subtitle: 'text-white',\n equalCreditsText:\n 'bg-gradient-to-r from-[#3AD1FF] to-[#008CD6] bg-clip-text text-transparent',\n }\n : {\n subtitle: 'text-[#D1D1D1]',\n equalCreditsText: 'text-[#F6EAD0]',\n }\n }\n />\n )}\n {key === ComponentKey.AnkersolixTask && (\n <CreditsAnkersolixTask copy={componentCopy as CreditsAnkersolixTaskCopy} id={key} />\n )}\n {key === ComponentKey.RedeemList && (\n <CreditsRedeemList copy={componentCopy as CreditsRedeemListCopy} id={key} />\n )}\n {key === ComponentKey.GoGift && <CreditsGoGift copy={componentCopy as CreditsGoGiftCopy} id={key} />}\n {key === ComponentKey.SpendCreditsLikeCash && (\n <CreditsCash copy={componentCopy as CreditsCashCopy} id={key} />\n )}\n {key === ComponentKey.MemberPrice && (\n <CreditsMemberPrice copy={componentCopy as CreditsMemberPriceCopy} id={key} />\n )}\n {key === ComponentKey.Faqs && <CreditsFaq copy={componentCopy as CreditsFaqCopy} id={key} />}\n {key !== ComponentKey.Banner && (\n <div className=\"laptop:h-16 desktop:h-[96px] lg-desktop:h-[128px] tablet:h-16 h-16\" />\n )}\n </>\n )\n })}\n </div>\n\n {/* Global Modals */}\n {pageCommon?.activitiesModal && (\n <ActivitiesModal\n isOpen={openActivitiesModal}\n data={pageCommon.activitiesModal}\n onClose={() => setOpenActivitiesModal(false)}\n />\n )}\n {pageCommon?.rewardsModal && (\n <RewardsModal\n isOpen={openMyRewardsModal}\n data={pageCommon.rewardsModal}\n onClose={() => setOpenMyRewardsModal(false)}\n />\n )}\n </>\n )\n}\n\nexport const CreditsTemplate = ({\n headlessConfig,\n siteConfig,\n creditsConfig,\n userContext,\n pageConfig,\n registrationContext,\n gtm,\n cartConfig,\n}: CreditsTemplateProps) => {\n return (\n <HeadlessProvider headlessConfig={headlessConfig}>\n <RegistrationProvider
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["import { classNames, HeadlessProvider } from '../lib'\nimport { useEffect, useRef } from 'react'\nimport { RegistrationProvider } from '../components/registration/context/provider'\nimport { CreditsProvider, useCreditsContext } from '../components/credits/context/provider'\nimport { CreditsBanner } from '../components/credits/creditsBanner'\nimport { CreditsInfoCard } from '../components/credits/creditsInfoCard'\nimport { CreditsBenefits } from '../components/credits/creditsBenefits'\nimport { CreditsWaysToGetCredits } from '../components/credits/creditsWaysToGetCredits'\nimport { CreditsAnkersolixTask } from '../components/credits/creditsAnkersolixTask'\nimport { CreditsRedeemList } from '../components/credits/creditsRedeemList'\nimport { CreditsGoGift } from '../components/credits/creditsGoGift'\nimport { CreditsCash } from '../components/credits/creditsCash'\nimport { CreditsMemberPrice } from '../components/credits/creditsMemberPrice'\nimport { CreditsFaq } from '../components/credits/creditsFaq'\nimport { CreditsNavigation } from '../components/credits/creditsNavigation'\nimport ActivitiesModal from '../components/credits/modal/ActivitiesModal'\nimport RewardsModal from '../components/credits/modal/RewardsModal'\nimport { ComponentKey } from './Credits.types'\nimport type {\n CreditsTemplateProps,\n CreditsContentProps,\n CreditsBannerCopy,\n CreditsInfoCardCopy,\n CreditsBenefitsCopy,\n CreditsWaysToGetCreditsCopy,\n CreditsAnkersolixTaskCopy,\n CreditsRedeemListCopy,\n CreditsGoGiftCopy,\n CreditsCashCopy,\n CreditsMemberPriceCopy,\n CreditsFaqCopy,\n} from './Credits.types'\n\nconst CreditsContent = ({ headlessConfig, pageConfig, userContext }: CreditsContentProps) => {\n const { openMyRewardsModal, setOpenMyRewardsModal, openActivitiesModal, setOpenActivitiesModal, pageCommon } = useCreditsContext()\n const hasScrolled = useRef(false)\n\n useEffect(() => {\n if (hasScrolled.current || typeof window === 'undefined') return\n\n const params = new URLSearchParams(window.location.search)\n const section = params.get('section')\n if (!section) return\n\n const navHeight = 56\n\n const tryScroll = (attempts = 0) => {\n const el = document.getElementById(section)\n if (el) {\n hasScrolled.current = true\n const top = el.getBoundingClientRect().top + window.pageYOffset - navHeight\n window.scrollTo({ top, behavior: 'smooth' })\n } else if (attempts < 10) {\n setTimeout(() => tryScroll(attempts + 1), 300)\n }\n }\n\n tryScroll()\n }, [])\n\n return (\n <>\n {/* \u5BFC\u822A\u7EC4\u4EF6 - \u56FA\u5B9A\u4F4D\u7F6E\uFF0C\u4E0D\u53C2\u4E0E order \u6392\u5E8F */}\n {pageConfig.components[ComponentKey.Navigation] && (\n <CreditsNavigation copy={pageConfig.components[ComponentKey.Navigation]} />\n )}\n <div className={classNames('bg-[#f5f5f7] leading-[1.2]')}>\n {pageConfig.order.map(key => {\n // \u8DF3\u8FC7\u5BFC\u822A\u7EC4\u4EF6\uFF0C\u56E0\u4E3A\u5B83\u5DF2\u7ECF\u56FA\u5B9A\u6E32\u67D3\u5728\u4E0A\u65B9\n if (key === ComponentKey.Navigation) return null\n const componentCopy = pageConfig.components?.[key]\n if (!componentCopy) return null\n return (\n <>\n {key === ComponentKey.Banner && <CreditsBanner copy={componentCopy as CreditsBannerCopy} id={key} />}\n {key === ComponentKey.InfoCard && userContext?.profile && (\n <CreditsInfoCard copy={componentCopy as CreditsInfoCardCopy} id={key} />\n )}\n {key === ComponentKey.Benefits && (\n <CreditsBenefits copy={componentCopy as CreditsBenefitsCopy} id={key} />\n )}\n {key === ComponentKey.WaysToGetCredits && (\n <CreditsWaysToGetCredits\n copy={componentCopy as CreditsWaysToGetCreditsCopy}\n id={key}\n classNames={\n headlessConfig.brand === 'anker'\n ? {\n subtitle: 'text-white',\n equalCreditsText:\n 'bg-gradient-to-r from-[#3AD1FF] to-[#008CD6] bg-clip-text text-transparent',\n }\n : {\n subtitle: 'text-[#D1D1D1]',\n equalCreditsText: 'text-[#F6EAD0]',\n }\n }\n />\n )}\n {key === ComponentKey.AnkersolixTask && (\n <CreditsAnkersolixTask copy={componentCopy as CreditsAnkersolixTaskCopy} id={key} />\n )}\n {key === ComponentKey.RedeemList && (\n <CreditsRedeemList copy={componentCopy as CreditsRedeemListCopy} id={key} />\n )}\n {key === ComponentKey.GoGift && <CreditsGoGift copy={componentCopy as CreditsGoGiftCopy} id={key} />}\n {key === ComponentKey.SpendCreditsLikeCash && (\n <CreditsCash copy={componentCopy as CreditsCashCopy} id={key} />\n )}\n {key === ComponentKey.MemberPrice && (\n <CreditsMemberPrice copy={componentCopy as CreditsMemberPriceCopy} id={key} />\n )}\n {key === ComponentKey.Faqs && <CreditsFaq copy={componentCopy as CreditsFaqCopy} id={key} />}\n {key !== ComponentKey.Banner && (\n <div className=\"laptop:h-16 desktop:h-[96px] lg-desktop:h-[128px] tablet:h-16 h-16\" />\n )}\n </>\n )\n })}\n </div>\n\n {/* Global Modals */}\n {pageCommon?.activitiesModal && (\n <ActivitiesModal\n isOpen={openActivitiesModal}\n data={pageCommon.activitiesModal}\n onClose={() => setOpenActivitiesModal(false)}\n />\n )}\n {pageCommon?.rewardsModal && (\n <RewardsModal\n isOpen={openMyRewardsModal}\n data={pageCommon.rewardsModal}\n onClose={() => setOpenMyRewardsModal(false)}\n />\n )}\n </>\n )\n}\n\nexport const CreditsTemplate = ({\n headlessConfig,\n siteConfig,\n creditsConfig,\n userContext,\n pageConfig,\n registrationContext,\n gtm,\n cartConfig,\n}: CreditsTemplateProps) => {\n return (\n <HeadlessProvider headlessConfig={headlessConfig}>\n <RegistrationProvider\n copy={siteConfig.registrationsSettings}\n email={userContext?.profile?.email}\n apiBaseUrl={userContext?.apiBaseUrl}\n >\n <CreditsProvider\n profile={userContext?.profile}\n removeProfile={userContext?.removeProfile}\n isLoadingProfile={userContext?.isLoadingProfile}\n openSignInPopup={registrationContext.openSignInPopup}\n openSignUpPopup={registrationContext.openSignUpPopup}\n creditInfo={userContext?.creditInfo}\n taskIdToTypeMapping={siteConfig.taskIdToTypeMapping}\n taskNameMapping={siteConfig.taskNameMapping}\n customer={userContext?.customer}\n fetchCreditInfo={userContext?.fetchCreditInfo}\n customerLoading={userContext?.customerLoading}\n gtm={gtm}\n pageCommon={pageConfig.common}\n memberPriceDiscount={siteConfig.memberPriceDiscount}\n alpcBrand={creditsConfig?.alpcBrand}\n alpcCountry={creditsConfig?.alpcCountry}\n cartConfig={cartConfig}\n apiBaseUrl={userContext?.apiBaseUrl}\n >\n <CreditsContent headlessConfig={headlessConfig} pageConfig={pageConfig} userContext={userContext} />\n </CreditsProvider>\n </RegistrationProvider>\n </HeadlessProvider>\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["Fragment", "jsx", "jsxs", "classNames", "HeadlessProvider", "useEffect", "useRef", "RegistrationProvider", "CreditsProvider", "useCreditsContext", "CreditsBanner", "CreditsInfoCard", "CreditsBenefits", "CreditsWaysToGetCredits", "CreditsAnkersolixTask", "CreditsRedeemList", "CreditsGoGift", "CreditsCash", "CreditsMemberPrice", "CreditsFaq", "CreditsNavigation", "ActivitiesModal", "RewardsModal", "ComponentKey", "CreditsContent", "headlessConfig", "pageConfig", "userContext", "openMyRewardsModal", "setOpenMyRewardsModal", "openActivitiesModal", "setOpenActivitiesModal", "pageCommon", "hasScrolled", "section", "navHeight", "tryScroll", "attempts", "el", "top", "key", "componentCopy", "CreditsTemplate", "siteConfig", "creditsConfig", "registrationContext", "gtm", "cartConfig"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@ import { useEffect, useState } from 'react'
|
|
|
3
3
|
import { useHeadlessContext } from '../../../../lib'
|
|
4
4
|
import { type ShippingCountry } from '../../type'
|
|
5
5
|
|
|
6
|
-
function useCountries({ shopifyStoreDomain }: { shopifyStoreDomain: string }) {
|
|
6
|
+
function useCountries({ shopifyStoreDomain, apiBaseUrl }: { shopifyStoreDomain: string; apiBaseUrl?: string }) {
|
|
7
7
|
const { locale = '' } = useHeadlessContext()
|
|
8
8
|
|
|
9
9
|
const [isLoading, setLoading] = useState(false)
|
|
@@ -13,7 +13,7 @@ function useCountries({ shopifyStoreDomain }: { shopifyStoreDomain: string }) {
|
|
|
13
13
|
const fetchCountries = async () => {
|
|
14
14
|
setLoading(true)
|
|
15
15
|
try {
|
|
16
|
-
const response = await fetch('/api/multipass/account/countries
|
|
16
|
+
const response = await fetch(`${apiBaseUrl || ''}/api/multipass/account/countries`, {
|
|
17
17
|
credentials: 'include',
|
|
18
18
|
headers: {
|
|
19
19
|
'current-language': locale,
|
|
@@ -39,7 +39,7 @@ function useCountries({ shopifyStoreDomain }: { shopifyStoreDomain: string }) {
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
fetchCountries()
|
|
42
|
-
}, [locale])
|
|
42
|
+
}, [locale, apiBaseUrl])
|
|
43
43
|
|
|
44
44
|
return {
|
|
45
45
|
isLoading,
|
|
@@ -3,7 +3,13 @@ import { useEffect, useState } from 'react'
|
|
|
3
3
|
import { useHeadlessContext } from '../../../../lib'
|
|
4
4
|
import { type ShippingCountry, type ShippingZone } from '../../type'
|
|
5
5
|
|
|
6
|
-
function useShippingCountries({
|
|
6
|
+
function useShippingCountries({
|
|
7
|
+
shopifyStoreDomain,
|
|
8
|
+
apiBaseUrl,
|
|
9
|
+
}: {
|
|
10
|
+
shopifyStoreDomain: string
|
|
11
|
+
apiBaseUrl?: string
|
|
12
|
+
}) {
|
|
7
13
|
const { locale = '' } = useHeadlessContext()
|
|
8
14
|
|
|
9
15
|
const [isLoading, setLoading] = useState(false)
|
|
@@ -13,12 +19,15 @@ function useShippingCountries({ shopifyStoreDomain }: { shopifyStoreDomain: stri
|
|
|
13
19
|
const fetchCountries = async () => {
|
|
14
20
|
setLoading(true)
|
|
15
21
|
try {
|
|
16
|
-
const response = await fetch(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
'
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
const response = await fetch(
|
|
23
|
+
`${apiBaseUrl || ''}/api/multipass/rainbowbridge/uc/shop/shipping_zones?shop=${shopifyStoreDomain}`,
|
|
24
|
+
{
|
|
25
|
+
credentials: 'include',
|
|
26
|
+
headers: {
|
|
27
|
+
'current-language': locale,
|
|
28
|
+
},
|
|
29
|
+
}
|
|
30
|
+
)
|
|
22
31
|
const res: any = await response.json()
|
|
23
32
|
|
|
24
33
|
// 国家过滤
|
|
@@ -50,7 +59,7 @@ function useShippingCountries({ shopifyStoreDomain }: { shopifyStoreDomain: stri
|
|
|
50
59
|
}
|
|
51
60
|
|
|
52
61
|
fetchCountries()
|
|
53
|
-
}, [locale])
|
|
62
|
+
}, [locale, apiBaseUrl, shopifyStoreDomain])
|
|
54
63
|
|
|
55
64
|
return {
|
|
56
65
|
isLoading,
|
|
@@ -5,11 +5,10 @@ import { useCreditsContext } from '../provider'
|
|
|
5
5
|
const normalizeResponseData = (responseData: any) => {
|
|
6
6
|
if (!responseData) return responseData
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
// 兼容部分仓库的代码会对返回进行封装
|
|
9
|
+
if (responseData.data) {
|
|
9
10
|
return responseData.data
|
|
10
11
|
}
|
|
11
|
-
|
|
12
|
-
// 一层结构,直接返回
|
|
13
12
|
return responseData
|
|
14
13
|
}
|
|
15
14
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Button, Text } from '@anker-in/headless-ui'
|
|
2
2
|
import classNames from 'classnames'
|
|
3
|
+
import { useCreditsContext } from '../../context/provider'
|
|
3
4
|
import { AddressForm } from '../AddressForm'
|
|
4
5
|
import { useHeadlessContext } from '../../../../lib'
|
|
5
6
|
import type { RedeemableItem as RedeemableItemType, RedeemModalCommon } from '../../type'
|
|
@@ -35,8 +36,9 @@ export const Address = ({
|
|
|
35
36
|
item,
|
|
36
37
|
}: AddressProps) => {
|
|
37
38
|
const { storeDomain, brand } = useHeadlessContext()
|
|
39
|
+
const { apiBaseUrl } = useCreditsContext()
|
|
38
40
|
const rounded = ROUNDED_BRANDS.includes(brand)
|
|
39
|
-
const { countries = [], isLoading: countriesLoading } = useShippingCountries({ shopifyStoreDomain: storeDomain })
|
|
41
|
+
const { countries = [], isLoading: countriesLoading } = useShippingCountries({ shopifyStoreDomain: storeDomain, apiBaseUrl })
|
|
40
42
|
|
|
41
43
|
return (
|
|
42
44
|
<div className="relative">
|
|
@@ -21,7 +21,7 @@ type RedeemProductModalProps = Omit<ModalContainerProps, 'isOpen'> & {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
function RedeemProductModal({ item, copy, onError, ...props }: RedeemProductModalProps) {
|
|
24
|
-
const { fetchCreditInfo, profile, pageCommon } = useCreditsContext()
|
|
24
|
+
const { fetchCreditInfo, profile, pageCommon, apiBaseUrl } = useCreditsContext()
|
|
25
25
|
const { storeDomain } = useHeadlessContext()
|
|
26
26
|
|
|
27
27
|
const { shippingAddress, shippingProduct } = copy.product
|
|
@@ -35,7 +35,7 @@ function RedeemProductModal({ item, copy, onError, ...props }: RedeemProductModa
|
|
|
35
35
|
})
|
|
36
36
|
const [disabled, setDisabled] = useState(false)
|
|
37
37
|
|
|
38
|
-
const { countries = [], isLoading: countriesLoading } = useShippingCountries({ shopifyStoreDomain: storeDomain })
|
|
38
|
+
const { countries = [], isLoading: countriesLoading } = useShippingCountries({ shopifyStoreDomain: storeDomain, apiBaseUrl })
|
|
39
39
|
|
|
40
40
|
const { isMutating: loading, trigger } = useRedeemProduct({
|
|
41
41
|
onSuccess(responseData) {
|
|
@@ -44,6 +44,7 @@ export function MemberPopupProvider({
|
|
|
44
44
|
<RegistrationProvider
|
|
45
45
|
email={contextValue.profile?.email}
|
|
46
46
|
copy={{ authCodeActivate: earnCreditsCopy?.authCodeActivate }}
|
|
47
|
+
apiBaseUrl={contextValue.alpcConfig?.apiBaseUrl}
|
|
47
48
|
>
|
|
48
49
|
<MemberPopupContext.Provider
|
|
49
50
|
value={{
|
|
@@ -37,7 +37,7 @@ async function getRecaptchaToken(sitekey: string): Promise<string> {
|
|
|
37
37
|
|
|
38
38
|
export default function ActivitiesSubscribeModal({ copy, email: initialEmail }: Props) {
|
|
39
39
|
const { alpcConfig, setIsSubscribeSuccess, pageHandle } = useMemberPopupContext()
|
|
40
|
-
const { locale } = alpcConfig
|
|
40
|
+
const { locale, apiBaseUrl } = alpcConfig
|
|
41
41
|
const { brand: headlessBrand, storeDomain, recaptchaSitekey } = useHeadlessContext()
|
|
42
42
|
const rounded = ROUNDED_BRANDS.includes(headlessBrand)
|
|
43
43
|
const [policy, setPolicy] = useState(copy.policyDefaultChecked ?? false)
|
|
@@ -60,7 +60,7 @@ export default function ActivitiesSubscribeModal({ copy, email: initialEmail }:
|
|
|
60
60
|
const { register_source } = getAdCookie()
|
|
61
61
|
const recaptchaToken = await getRecaptchaToken(recaptchaSitekey || '')
|
|
62
62
|
try {
|
|
63
|
-
const response = await fetch('/api/multipass/rainbowbridge/activities
|
|
63
|
+
const response = await fetch(`${apiBaseUrl || ''}/api/multipass/rainbowbridge/activities`, {
|
|
64
64
|
method: 'POST',
|
|
65
65
|
credentials: 'include',
|
|
66
66
|
headers: {
|
|
@@ -100,7 +100,7 @@ export default function ActivitiesSubscribeModal({ copy, email: initialEmail }:
|
|
|
100
100
|
} finally {
|
|
101
101
|
setLoading(false)
|
|
102
102
|
}
|
|
103
|
-
}, [email, policy, locale, storeDomain, copy, setIsSubscribeSuccess])
|
|
103
|
+
}, [email, policy, locale, storeDomain, copy, setIsSubscribeSuccess, apiBaseUrl])
|
|
104
104
|
|
|
105
105
|
return (
|
|
106
106
|
<div className="flex flex-col">
|
|
@@ -20,7 +20,7 @@ type Props = {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
export default function ActivatePanel({ copy, onClose }: Props) {
|
|
23
|
-
const { setIsActivateSuccess, fetchCreditInfo, profile } = useMemberPopupContext()
|
|
23
|
+
const { setIsActivateSuccess, fetchCreditInfo, profile, alpcConfig } = useMemberPopupContext()
|
|
24
24
|
const { locale, brand } = useHeadlessContext()
|
|
25
25
|
const { email } = useRegistration()
|
|
26
26
|
const rounded = ROUNDED_BRANDS.includes(brand)
|
|
@@ -29,9 +29,9 @@ export default function ActivatePanel({ copy, onClose }: Props) {
|
|
|
29
29
|
isMutating: isSendingEmail,
|
|
30
30
|
trigger: triggerSendValidationEmail,
|
|
31
31
|
data: sendEmailData,
|
|
32
|
-
} = useSendEmailValidation()
|
|
32
|
+
} = useSendEmailValidation(alpcConfig.apiBaseUrl)
|
|
33
33
|
|
|
34
|
-
const { isMutating: emailValidationLoading, trigger: triggerEmailValidation } = useEmailValidation()
|
|
34
|
+
const { isMutating: emailValidationLoading, trigger: triggerEmailValidation } = useEmailValidation(undefined, alpcConfig.apiBaseUrl)
|
|
35
35
|
|
|
36
36
|
const [messageText, setMessageText] = useState('')
|
|
37
37
|
const [messageStatus, setMessageStatus] = useState('')
|
|
@@ -26,8 +26,8 @@ export default function CompleteProfilePanel({ copy, onClose }: Props) {
|
|
|
26
26
|
const [firstNameError, setFirstNameError] = useState('')
|
|
27
27
|
const [lastNameError, setLastNameError] = useState('')
|
|
28
28
|
|
|
29
|
-
const { updateProfile, isLoading } = useUpdateProfile({ locale, appName: alpcConfig.appName })
|
|
30
|
-
const { countries } = useCountries({ shopifyStoreDomain: storeDomain })
|
|
29
|
+
const { updateProfile, isLoading } = useUpdateProfile({ locale, appName: alpcConfig.appName, apiBaseUrl: alpcConfig.apiBaseUrl })
|
|
30
|
+
const { countries } = useCountries({ shopifyStoreDomain: storeDomain, apiBaseUrl: alpcConfig.apiBaseUrl })
|
|
31
31
|
|
|
32
32
|
useEffect(() => {
|
|
33
33
|
if (profile) {
|
|
@@ -3,6 +3,7 @@ import { useCallback, useState } from 'react'
|
|
|
3
3
|
type UseUpdateProfileConfig = {
|
|
4
4
|
locale?: string
|
|
5
5
|
appName?: string
|
|
6
|
+
apiBaseUrl?: string
|
|
6
7
|
}
|
|
7
8
|
|
|
8
9
|
type ProfileData = {
|
|
@@ -13,7 +14,7 @@ type ProfileData = {
|
|
|
13
14
|
dob?: string
|
|
14
15
|
}
|
|
15
16
|
|
|
16
|
-
export function useUpdateProfile({ locale = '', appName = '' }: UseUpdateProfileConfig = {}) {
|
|
17
|
+
export function useUpdateProfile({ locale = '', appName = '', apiBaseUrl = '' }: UseUpdateProfileConfig = {}) {
|
|
17
18
|
const [isLoading, setIsLoading] = useState(false)
|
|
18
19
|
const [error, setError] = useState<string | null>(null)
|
|
19
20
|
|
|
@@ -22,7 +23,7 @@ export function useUpdateProfile({ locale = '', appName = '' }: UseUpdateProfile
|
|
|
22
23
|
setIsLoading(true)
|
|
23
24
|
setError(null)
|
|
24
25
|
try {
|
|
25
|
-
const response = await fetch(
|
|
26
|
+
const response = await fetch(`${apiBaseUrl}/api/multipass/account/users/update_profile`, {
|
|
26
27
|
method: 'PUT',
|
|
27
28
|
credentials: 'include',
|
|
28
29
|
headers: {
|
|
@@ -44,7 +45,7 @@ export function useUpdateProfile({ locale = '', appName = '' }: UseUpdateProfile
|
|
|
44
45
|
setIsLoading(false)
|
|
45
46
|
}
|
|
46
47
|
},
|
|
47
|
-
[locale, appName]
|
|
48
|
+
[locale, appName, apiBaseUrl]
|
|
48
49
|
)
|
|
49
50
|
|
|
50
51
|
return { updateProfile, isLoading, error }
|
|
@@ -17,7 +17,7 @@ export function useReferralOverview(): {
|
|
|
17
17
|
const { profile, alpcConfig } = useMemberPopupContext()
|
|
18
18
|
const isLogin = !!profile
|
|
19
19
|
|
|
20
|
-
const swrKey = isLogin ?
|
|
20
|
+
const swrKey = isLogin ? `${alpcConfig.apiBaseUrl || ''}/api/multipass/mktsrv/v1/referral/reward/overview/cash` : null
|
|
21
21
|
|
|
22
22
|
const swrFetcher = async (url: string) => {
|
|
23
23
|
const response = await fetch(url, {
|
|
@@ -16,19 +16,19 @@ import { ROUNDED_BRANDS } from '../../../constants'
|
|
|
16
16
|
|
|
17
17
|
export const AuthCodeActivate: React.FC<AuthCodeActivateProps> = ({ copy }) => {
|
|
18
18
|
const { locale, brand } = useHeadlessContext()
|
|
19
|
-
const { email, authCodeActivate } = useRegistration()
|
|
19
|
+
const { email, authCodeActivate, apiBaseUrl } = useRegistration()
|
|
20
20
|
const rounded = ROUNDED_BRANDS.includes(brand)
|
|
21
21
|
|
|
22
22
|
const { activeToken, setActiveToken, setIsSendingActivateEmail, setIsActivateSuccess, onAuthSuccess, autoSendEmail } =
|
|
23
23
|
authCodeActivate
|
|
24
24
|
|
|
25
|
-
const { isMutating: emailValidationLoading, trigger: triggerEmailValidation } = useEmailValidation()
|
|
25
|
+
const { isMutating: emailValidationLoading, trigger: triggerEmailValidation } = useEmailValidation(undefined, apiBaseUrl)
|
|
26
26
|
|
|
27
27
|
const {
|
|
28
28
|
isMutating: isSendingEmail,
|
|
29
29
|
trigger: triggerSendValidationEmail,
|
|
30
30
|
data: sendEmailData,
|
|
31
|
-
} = useSendEmailValidation()
|
|
31
|
+
} = useSendEmailValidation(apiBaseUrl)
|
|
32
32
|
|
|
33
33
|
const [messageText, setMessageText] = useState('')
|
|
34
34
|
const [messageStatus, setMessageStatus] = useState('')
|
|
@@ -4,6 +4,7 @@ import { AuthCodeActivate } from '../authCodeActivate'
|
|
|
4
4
|
interface RegistrationContextType {
|
|
5
5
|
email?: string
|
|
6
6
|
copy?: any
|
|
7
|
+
apiBaseUrl?: string
|
|
7
8
|
authCodeActivate: {
|
|
8
9
|
isOpen: boolean
|
|
9
10
|
open: () => void
|
|
@@ -49,7 +50,12 @@ export const useRegistration = () => {
|
|
|
49
50
|
return context
|
|
50
51
|
}
|
|
51
52
|
|
|
52
|
-
export const RegistrationProvider = ({
|
|
53
|
+
export const RegistrationProvider = ({
|
|
54
|
+
children,
|
|
55
|
+
email,
|
|
56
|
+
copy,
|
|
57
|
+
apiBaseUrl,
|
|
58
|
+
}: PropsWithChildren<{ email?: string; copy?: any; apiBaseUrl?: string }>) => {
|
|
53
59
|
const [popAuthCode, setPopAuthCode] = useState(false)
|
|
54
60
|
const [onAuthSuccess, setOnAuthSuccess] = useState<(() => void) | undefined>(undefined)
|
|
55
61
|
const [isActivateSuccess, setIsActivateSuccess] = useState(false)
|
|
@@ -62,6 +68,7 @@ export const RegistrationProvider = ({ children, email, copy }: PropsWithChildre
|
|
|
62
68
|
value={{
|
|
63
69
|
email,
|
|
64
70
|
copy,
|
|
71
|
+
apiBaseUrl,
|
|
65
72
|
authCodeActivate: {
|
|
66
73
|
activeToken,
|
|
67
74
|
isOpen: popAuthCode,
|
|
@@ -8,7 +8,8 @@ export const useEmailValidation = (
|
|
|
8
8
|
{ type: 'responseError'; data: any; response: any },
|
|
9
9
|
string,
|
|
10
10
|
{ token: string; code: string }
|
|
11
|
-
|
|
11
|
+
>,
|
|
12
|
+
apiBaseUrl?: string
|
|
12
13
|
) => {
|
|
13
14
|
const { locale } = useHeadlessContext()
|
|
14
15
|
return useSWRMutation(
|
|
@@ -16,6 +17,7 @@ export const useEmailValidation = (
|
|
|
16
17
|
(_, { arg: { token, code } }: { arg: { token: string; code: string } }) => {
|
|
17
18
|
return fetcher({
|
|
18
19
|
url: `/api/multipass/account/users/email_validation`,
|
|
20
|
+
baseUrl: apiBaseUrl,
|
|
19
21
|
method: 'POST',
|
|
20
22
|
body: { activation_code: token, verify_code: code },
|
|
21
23
|
action: 'account',
|
|
@@ -5,13 +5,14 @@ import { fetcher } from '../../utils'
|
|
|
5
5
|
// data 参数会被 stringify 后放入到邮件链接参数中
|
|
6
6
|
export type RequestData = { email: string; data: any }
|
|
7
7
|
|
|
8
|
-
export function useSendEmailValidation(): SWRMutationResponse<any, any, string, { email: string } & any> {
|
|
8
|
+
export function useSendEmailValidation(apiBaseUrl?: string): SWRMutationResponse<any, any, string, { email: string } & any> {
|
|
9
9
|
const { appName, locale } = useHeadlessContext()
|
|
10
10
|
|
|
11
11
|
return useSWRMutation('send-email-validation', (_, { arg: { email, ...rest } }: { arg: RequestData }) =>
|
|
12
12
|
fetcher({
|
|
13
13
|
locale,
|
|
14
14
|
url: '/api/multipass/account/users/send_validation_email',
|
|
15
|
+
baseUrl: apiBaseUrl,
|
|
15
16
|
method: 'POST',
|
|
16
17
|
body: { email: email, app: appName, ...rest },
|
|
17
18
|
needRecaptcha: true,
|
|
@@ -3,6 +3,7 @@ import { handleFetchResponse } from './fetchResponse'
|
|
|
3
3
|
export const fetcher = async ({
|
|
4
4
|
locale = 'en',
|
|
5
5
|
url,
|
|
6
|
+
baseUrl,
|
|
6
7
|
method = 'POST',
|
|
7
8
|
headers = {},
|
|
8
9
|
repeatKey,
|
|
@@ -24,7 +25,7 @@ export const fetcher = async ({
|
|
|
24
25
|
setTimeout(() => controller.abort(), timeout)
|
|
25
26
|
}
|
|
26
27
|
|
|
27
|
-
const data = await fetch(url
|
|
28
|
+
const data = await fetch(`${baseUrl || ''}${url}`, {
|
|
28
29
|
method,
|
|
29
30
|
mode: 'cors',
|
|
30
31
|
credentials: 'include',
|
|
@@ -150,7 +150,11 @@ export const CreditsTemplate = ({
|
|
|
150
150
|
}: CreditsTemplateProps) => {
|
|
151
151
|
return (
|
|
152
152
|
<HeadlessProvider headlessConfig={headlessConfig}>
|
|
153
|
-
<RegistrationProvider
|
|
153
|
+
<RegistrationProvider
|
|
154
|
+
copy={siteConfig.registrationsSettings}
|
|
155
|
+
email={userContext?.profile?.email}
|
|
156
|
+
apiBaseUrl={userContext?.apiBaseUrl}
|
|
157
|
+
>
|
|
154
158
|
<CreditsProvider
|
|
155
159
|
profile={userContext?.profile}
|
|
156
160
|
removeProfile={userContext?.removeProfile}
|