{"version":3,"file":"useIdentityVerificationModal.Lfbzp7QN.mjs","names":["useMemo","Fragment"],"sources":["https:/asset.29cm.co.kr/contents/framer/hooks/fetchers/useLazyFetchRaffleGroup.js","https:/asset.29cm.co.kr/contents/framer/utils/analytics/braze/trackRaffleClickBraze.js","https:/asset.29cm.co.kr/contents/framer/apis/raffle/RaffleApiService.types.js","https:/asset.29cm.co.kr/contents/framer/utils/raffle/raffleAgreementUtils.js","https:/asset.29cm.co.kr/contents/framer/hooks/useIsCallJsPayloadUnSupported.js","https:/asset.29cm.co.kr/contents/framer/hooks/useSubscribeIdentityVerification.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/bottom-sheets/IdentityVerificationBottomSheet/IdentityVerificationBottomSheet.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/bottom-sheets/IdentityVerificationBottomSheet/IdentityVerificationBottomSheet.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/dialogs/IdentityVerificationDialog/IdentityVerificationDialog.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/dialogs/IdentityVerificationDialog/IdentityVerificationDialog.hooks.js","https:/asset.29cm.co.kr/contents/framer/utils/getUserName.js","https:/asset.29cm.co.kr/contents/framer/utils/openPopup.js","https:/asset.29cm.co.kr/contents/framer/utils/openIdentifyVerificationPopup.js","https:/asset.29cm.co.kr/contents/framer/hooks/useIdentityVerificationModal.js"],"sourcesContent":["import { raffleApi } from \"../../apis/raffle/RaffleApiService.js\";\nimport { useLazySWR } from \"../swr/useLazySWR.js\";\nconst raffleGroupFetcherKey = \"raffle-group\";\nconst useLazyFetchRaffleGroup = (raffleGroupId) => {\n  const enabled = Boolean(raffleGroupId);\n  const {\n    data,\n    isLoading,\n    fetch,\n    mutate\n  } = useLazySWR(enabled ? [raffleGroupFetcherKey, raffleGroupId] : null, () => raffleApi.getRaffleGroup(raffleGroupId));\n  const isPending = isLoading || !enabled;\n  return {\n    raffleGroup: data == null ? void 0 : data.data,\n    isPending,\n    fetch,\n    mutate\n  };\n};\nexport {\n  useLazyFetchRaffleGroup\n};\n","import { trackWebBraze } from \"./web/trackWebBraze.js\";\nimport { trackWebviewBraze } from \"./webview/trackWebviewBraze.js\";\nconst trackRaffleClickBraze = (raffleId, buttonName) => {\n  const properties = {\n    page_name: \"content\",\n    button_id: `raffle_${raffleId}`,\n    button_name: buttonName\n  };\n  trackWebBraze(\"click_button\", properties);\n  trackWebviewBraze(\"click_button\", properties);\n};\nexport {\n  trackRaffleClickBraze\n};\n","var RaffleAgreementRequirement = /* @__PURE__ */ ((RaffleAgreementRequirement2) => {\n  RaffleAgreementRequirement2[\"Required\"] = \"REQUIRED\";\n  RaffleAgreementRequirement2[\"Optional\"] = \"OPTIONAL\";\n  return RaffleAgreementRequirement2;\n})(RaffleAgreementRequirement || {});\nexport {\n  RaffleAgreementRequirement\n};\n","import \"../../apis/raffle/RaffleApiService.js\";\nimport { RaffleAgreementRequirement } from \"../../apis/raffle/RaffleApiService.types.js\";\nimport { AgreementType } from \"../../types/agreement.js\";\nconst isAllRequiredAgreed = (agreements) => {\n  const requiredAgreements = agreements.filter((agreement) => agreement.agreementRequirement === RaffleAgreementRequirement.Required);\n  return requiredAgreements.every((agreement) => agreement.isAgreed);\n};\nconst hasUnagreedRequired = (agreements) => {\n  return agreements.some((agreement) => !agreement.isAgreed && agreement.agreementRequirement === RaffleAgreementRequirement.Required);\n};\nconst RAFFLE_AGREEMENT_TYPE_LIST = [AgreementType.Advertising, AgreementType.PersonalInformation, AgreementType.Privacy];\nconst shouldDisplayAgreeAllCheckbox = (agreements) => {\n  return agreements.length === RAFFLE_AGREEMENT_TYPE_LIST.length;\n};\nexport {\n  hasUnagreedRequired,\n  isAllRequiredAgreed,\n  shouldDisplayAgreeAllCheckbox\n};\n","import { useMemo } from \"react\";\nimport { useTargetAppVersion } from \"./useTargetAppVersion.js\";\nimport { isTabView } from \"../utils/custom-tab/isTabView.js\";\nconst useIsCallJsPayloadUnSupported = () => {\n  const {\n    isTargetAppVersion\n  } = useTargetAppVersion({\n    maxIosVersion: 1273\n    // iOS 6.88.0 (1274) 부터 수정 완료\n  });\n  const isCallJsPayloadUnsupported = useMemo(() => isTargetAppVersion && isTabView(), [isTargetAppVersion]);\n  return isCallJsPayloadUnsupported;\n};\nexport {\n  useIsCallJsPayloadUnSupported\n};\n","import \"./stores/content/content.store.js\";\nimport { isServer } from \"../utils/context.js\";\nimport \"../utils/event-properties/source.js\";\nimport \"framer\";\nimport { useEffect } from \"react\";\nimport { useDialog } from \"./useDialog.js\";\nimport { env } from \"../config/index.js\";\nimport { useIsCallJsPayloadUnSupported } from \"./useIsCallJsPayloadUnSupported.js\";\nconst useSubscribeIdentityVerification = ({\n  onSuccess,\n  onFail\n}) => {\n  const dialog = useDialog();\n  const callback = async (identityVerificationToken) => {\n    if (!identityVerificationToken) {\n      dialog.show({\n        content: \"본인인증 key가 존재하지 않습니다\",\n        id: \"identity-verification-error\"\n      });\n      onFail == null ? void 0 : onFail();\n      return;\n    }\n    await onSuccess(identityVerificationToken);\n  };\n  useReceiveMessageInApp(callback);\n  useReceiveMessageInWeb(callback);\n};\nconst IDENTITY_VERIFICATION_IN_APP_KEY = \"identityVerificationComplete\";\nconst IDENTITY_VERIFICATION_IN_WEB_KEY = \"identity-verification\";\nconst useReceiveMessageInApp = (callback) => {\n  const isCallJsPayloadUnsupported = useIsCallJsPayloadUnSupported();\n  useEffect(() => {\n    if (isCallJsPayloadUnsupported) {\n      return;\n    }\n    assignIdentityVerificationCallback(callback);\n    return () => {\n      clearIdentityVerificationCallback();\n    };\n  }, [isCallJsPayloadUnsupported]);\n};\nconst useReceiveMessageInWeb = (callback) => {\n  const handleCallback = (e) => {\n    if (e.data.type !== IDENTITY_VERIFICATION_IN_WEB_KEY) {\n      return;\n    }\n    if (env.workspace.auth !== e.origin) {\n      return;\n    }\n    callback(e.data.payload);\n  };\n  useEffect(() => {\n    window.addEventListener(\"message\", handleCallback, false);\n    return () => {\n      window.removeEventListener(\"message\", handleCallback, false);\n    };\n  }, []);\n};\nconst assignIdentityVerificationCallback = (callback) => {\n  if (isServer()) {\n    return;\n  }\n  window[IDENTITY_VERIFICATION_IN_APP_KEY] = callback;\n};\nconst clearIdentityVerificationCallback = () => {\n  if (isServer()) {\n    return;\n  }\n  delete window[IDENTITY_VERIFICATION_IN_APP_KEY];\n};\nexport {\n  useSubscribeIdentityVerification\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { useSubscribeIdentityVerification } from \"../../../../hooks/useSubscribeIdentityVerification.js\";\nimport { TwoButtonBottomSheetContent } from \"../TwoButtonBottomSheetContent/TwoButtonBottomSheetContent.js\";\nimport { useAnalytics } from \"../../../../hooks/analytics/useAnalytics.js\";\nimport \"../../../../node_modules/swr/core/dist/index.js\";\nimport \"../../../../apis/user-segment/CategoryFirstOrderApiService.js\";\nimport \"../../../../config/index.js\";\nimport \"../../../../node_modules/js-cookie/dist/js.cookie.js\";\nimport \"../../../../apis/highlight-products/HighlightProductsApiService.js\";\nimport \"../../../../apis/brand-mix/BrandMixApiService.js\";\nimport \"../../../../apis/one-brand-days/OneBrandDaysApiService.js\";\nimport \"../../../../apis/taste-sharing/TasteSharingApiService.js\";\nimport { useEffect } from \"react\";\nimport \"../../../../apis/user/UserApiService.js\";\nimport \"../../../../apis/preuser/PreuserApiService.js\";\nimport \"../../../../node_modules/vite-plugin-node-polyfills/shims/buffer/dist/index.js\";\nimport \"../../../../node_modules/swr/mutation/dist/index.js\";\nimport \"../../../../hooks/stores/content/content.store.js\";\nimport \"../../../../hooks/stores/dialog/dialog.store.js\";\nimport \"../../../../hooks/stores/global-layout/global-layout.store.js\";\nimport \"../../../../hooks/stores/toast/toast.store.js\";\nimport \"../../providers/ThemeProvider/ThemeProvider.js\";\nimport \"../../providers/BreakpointProvider/BreakpointProvider.js\";\nimport \"../../../../hooks/stores/bottom-sheet/bottom-sheet.store.js\";\nimport \"react-dom\";\nimport \"../../../systems/Dialog/Dialog.module.css.js\";\nimport \"framer-motion\";\nimport \"../../../../containers/DialogContainer/DialogContainer.emitter.js\";\nimport \"../../../../hooks/useFeatureFlag.js\";\nimport \"../../../../utils/redirectLogin.js\";\nimport \"../../../../utils/event-properties/source.js\";\nimport \"framer\";\nconst IdentityVerificationBottomSheet = ({\n  onVerified,\n  onFail,\n  ...bottomSheetContentParams\n}) => {\n  const {\n    trackAmplitude\n  } = useAnalytics();\n  useEffect(() => {\n    trackAmplitude(\"view_bottomsheet\", {\n      bottomsheet_type: \"connecting_information\"\n    });\n  }, []);\n  const handleSuccess = (token) => {\n    trackAmplitude(\"connecting_information_success\");\n    onVerified(token);\n  };\n  useSubscribeIdentityVerification({\n    onSuccess: handleSuccess,\n    onFail\n  });\n  return /* @__PURE__ */ jsx(TwoButtonBottomSheetContent, { ...bottomSheetContentParams });\n};\nexport {\n  IdentityVerificationBottomSheet\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { useBottomSheet } from \"../../../../hooks/useBottomSheet.js\";\nimport { IdentityVerificationBottomSheet } from \"./IdentityVerificationBottomSheet.js\";\nconst useIdentityVerificationBottomSheet = () => {\n  const bottomSheet = useBottomSheet();\n  const show = (props) => {\n    bottomSheet.show({\n      content: /* @__PURE__ */ jsx(IdentityVerificationBottomSheet, { ...props }),\n      detent: \"content-height\"\n    });\n  };\n  return {\n    show,\n    hide: bottomSheet.hide\n  };\n};\nexport {\n  useIdentityVerificationBottomSheet\n};\n","import { jsx, Fragment } from \"react/jsx-runtime\";\nimport { useSubscribeIdentityVerification } from \"../../../../hooks/useSubscribeIdentityVerification.js\";\nconst IdentityVerificationDialog = ({\n  onVerified,\n  onFail\n}) => {\n  useSubscribeIdentityVerification({\n    onSuccess: onVerified,\n    onFail\n  });\n  return /* @__PURE__ */ jsx(Fragment, {});\n};\nexport {\n  IdentityVerificationDialog\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { IdentityVerificationDialog } from \"./IdentityVerificationDialog.js\";\nimport \"react\";\nimport { ui } from \"../../../../containers/UIContainer/ui.js\";\nconst DIALOG_ID = \"identity-verification-dialog-id\";\nconst DEFAULT_MESSAGES = {\n  TITLE: \"본인인증을 진행해 주세요\",\n  DESCRIPTION: \"정확한 알림을 위해 본인 명의의 연락처가 필요해요.\\n인증은 처음 한 번만 받고 있어요.\",\n  PRIMARY_BUTTON_LABEL: \"본인인증 하기\",\n  SECONDARY_BUTTON_LABEL: \"다음에 하기\"\n};\nconst useIdentityVerificationDialog = () => {\n  const show = (params) => {\n    ui.showDialog({\n      title: params.title ?? DEFAULT_MESSAGES.TITLE,\n      description: params.description ?? DEFAULT_MESSAGES.DESCRIPTION,\n      primaryAction: {\n        label: params.primaryButtonText ?? DEFAULT_MESSAGES.PRIMARY_BUTTON_LABEL,\n        onClick: params.onPrimaryButtonClick\n      },\n      secondaryAction: {\n        label: params.secondaryButtonText ?? DEFAULT_MESSAGES.SECONDARY_BUTTON_LABEL,\n        onClick: params.onSecondaryButtonClick\n      },\n      children: /* @__PURE__ */ jsx(IdentityVerificationDialog, { onVerified: params.onVerified, onFail: params.onFail })\n    }, {\n      id: DIALOG_ID,\n      onClose: params.onClose\n    });\n  };\n  const hide = () => {\n    ui.hide(DIALOG_ID);\n  };\n  return {\n    show,\n    hide\n  };\n};\nexport {\n  useIdentityVerificationDialog\n};\n","import \"../config/index.js\";\nimport \"../apis/highlight-products/HighlightProductsApiService.js\";\nimport \"../node_modules/js-cookie/dist/js.cookie.js\";\nimport { userApi } from \"../apis/user/UserApiService.js\";\nimport \"../apis/preuser/PreuserApiService.js\";\nconst getUserName = async (knownName) => {\n  var _a;\n  if (knownName) {\n    return knownName;\n  }\n  try {\n    const response = await userApi.getUserMe();\n    if (response.result === \"SUCCESS\" && ((_a = response.data) == null ? void 0 : _a.userName)) {\n      return response.data.userName;\n    }\n  } catch {\n  }\n  return \"\";\n};\nexport {\n  getUserName\n};\n","import { isWebview } from \"./device.js\";\nimport { sendAppSchemeMessage } from \"./sendAppSchemeMessage.js\";\nconst POPUP_OPTIONS = \"width=500, height=550, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbar=no\";\nconst openPopup = (url, popupName, popupOptions) => {\n  var _a;\n  if (isWebview()) {\n    sendAppSchemeMessage(\"weblink_popup\", `url=${encodeURIComponent(url)}`);\n    return;\n  }\n  (_a = window.open(url, popupName, popupOptions ?? POPUP_OPTIONS)) == null ? void 0 : _a.focus();\n};\nexport {\n  openPopup\n};\n","import { env } from \"../config/index.js\";\nimport { openPopup } from \"./openPopup.js\";\nconst openIdentityVerificationPopup = (mode) => {\n  const baseUrl = `${env.workspace.auth}/identity-verification/form`;\n  const queryParams = new URLSearchParams();\n  if (mode !== void 0) {\n    queryParams.set(\"mode\", mode);\n  }\n  const queryString = queryParams.toString();\n  const identityVerificationFormUrl = queryString ? `${baseUrl}?${queryString}` : baseUrl;\n  openPopup(identityVerificationFormUrl, \"identity-verification-form\");\n};\nexport {\n  openIdentityVerificationPopup\n};\n","import \"../config/index.js\";\nimport \"../apis/highlight-products/HighlightProductsApiService.js\";\nimport \"../node_modules/js-cookie/dist/js.cookie.js\";\nimport { userApi } from \"../apis/user/UserApiService.js\";\nimport \"../apis/preuser/PreuserApiService.js\";\nimport { useIdentityVerificationBottomSheet } from \"../components/@shared/bottom-sheets/IdentityVerificationBottomSheet/IdentityVerificationBottomSheet.hooks.js\";\nimport { useIdentityVerificationDialog } from \"../components/@shared/dialogs/IdentityVerificationDialog/IdentityVerificationDialog.hooks.js\";\nimport { getUserName } from \"../utils/getUserName.js\";\nimport { openIdentityVerificationPopup } from \"../utils/openIdentifyVerificationPopup.js\";\nimport { postMessage } from \"../utils/postMessage.js\";\nimport { useTrackClickComponentEvent } from \"./events/useTrackClickComponentEvent.js\";\nimport \"../node_modules/swr/core/dist/index.js\";\nimport \"../apis/user-segment/CategoryFirstOrderApiService.js\";\nimport \"../apis/brand-mix/BrandMixApiService.js\";\nimport \"../apis/one-brand-days/OneBrandDaysApiService.js\";\nimport \"../apis/taste-sharing/TasteSharingApiService.js\";\nimport { useCurrentUserName } from \"./fetchers/useFetchUserInfo.js\";\nimport { useIsCallJsPayloadUnSupported } from \"./useIsCallJsPayloadUnSupported.js\";\nimport { useIsMobileDevice } from \"./useIsMobileDevice.js\";\nconst useIdentityVerificationModal = () => {\n  const {\n    show: showIdentityVerificationBottomSheet,\n    hide: hideIdentityVerificationBottomSheet\n  } = useIdentityVerificationBottomSheet();\n  const {\n    show: showIdentityVerificationDialog,\n    hide: hideIdentityVerificationDialog\n  } = useIdentityVerificationDialog();\n  const isMobileDevice = useIsMobileDevice();\n  const isCallJsPayloadUnSupported = useIsCallJsPayloadUnSupported();\n  const {\n    name\n  } = useCurrentUserName();\n  const {\n    trackClickComponentEvent\n  } = useTrackClickComponentEvent();\n  const show = ({\n    onSuccess,\n    onFail\n  }) => {\n    const handleVerified = createIdentityVerificationSuccessHandler({\n      onSuccess,\n      onFail,\n      userName: name\n    });\n    const commonParams = {\n      title: \"본인인증을 진행해 주세요\",\n      description: \"정확한 알림을 위해 본인 명의의 연락처가 필요해요.\\n인증은 처음 한 번만 받고 있어요.\",\n      primaryButtonText: \"본인인증 하기\",\n      secondaryButtonText: \"다음에 하기\",\n      onPrimaryButtonClick: openIdentityVerificationPopup,\n      onVerified: handleVerified,\n      onFail\n    };\n    if (isMobileDevice) {\n      showIdentityVerificationBottomSheet({\n        ...commonParams,\n        onPrimaryButtonClick: () => {\n          trackClickComponentEvent(\"confirm-identity-verification\");\n          if (isCallJsPayloadUnSupported) {\n            openIdentityVerificationPopup(\"DIRECT_UPDATE\");\n            hideIdentityVerificationBottomSheet();\n          } else {\n            openIdentityVerificationPopup();\n          }\n        },\n        onSecondaryButtonClick: () => {\n          trackClickComponentEvent(\"cancel-identity-verification\");\n          hide();\n        }\n      });\n      return;\n    }\n    showIdentityVerificationDialog({\n      ...commonParams,\n      onPrimaryButtonClick: openIdentityVerificationPopup,\n      onSecondaryButtonClick: hideIdentityVerificationDialog,\n      onClose: hideIdentityVerificationDialog\n    });\n  };\n  const hide = () => {\n    if (isMobileDevice) {\n      hideIdentityVerificationBottomSheet();\n      return;\n    }\n    hideIdentityVerificationDialog();\n  };\n  return {\n    show,\n    hide\n  };\n};\nconst createIdentityVerificationSuccessHandler = (params) => async (identityVerificationToken) => {\n  var _a, _b;\n  try {\n    const {\n      result,\n      errorCode,\n      message\n    } = await userApi.postIdentifyInfo({\n      identityVerificationToken,\n      type: \"UNKNOWN_CI_VERIFICATION\"\n    });\n    if (result === \"SUCCESS\") {\n      postMessage(\"amplitudeBypassUserProperty\", {\n        key: \"has_ci\",\n        value: \"true\"\n      });\n      (_a = params.onSuccess) == null ? void 0 : _a.call(params);\n      return;\n    }\n    if (errorCode === \"AGE_RESTRICTION\") {\n      throw new Error(\"개인정보 보호를 위해 만 14세 미만 아동은 서비스 이용이 불가능합니다\");\n    }\n    if (errorCode === \"INVALID_USER_PERSONAL_AUTH_INFO\") {\n      const userName = await getUserName(params.userName);\n      const nameDisplay = userName || \"회원\";\n      throw new Error(`가입 명의(${nameDisplay})와 동일한 명의로 본인 인증을 하셔야 합니다.\n동일 명의임에도 문제가 발생했다면, customer@29cm.co.kr 또는 1660-2929으로 문의해 주세요.`);\n    }\n    throw Error(message ?? \"사용자 정보 업데이트 중 알 수 없는 에러가 발생했습니다.\");\n  } catch (error) {\n    (_b = params.onFail) == null ? void 0 : _b.call(params, error);\n  }\n};\nexport {\n  useIdentityVerificationModal\n};\n"],"mappings":"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"}