첫 커밋
This commit is contained in:
2
src/shared/constants/colors.ts
Normal file
2
src/shared/constants/colors.ts
Normal file
@@ -0,0 +1,2 @@
|
||||
export const DEFAULT_BACKGROUND_COLOR = '#FFFFFF';
|
||||
export const HOME_BACKGROUND_COLOR = '#EEF3F8';
|
||||
1
src/shared/constants/common.ts
Normal file
1
src/shared/constants/common.ts
Normal file
@@ -0,0 +1 @@
|
||||
export const IMAGE_ROOT = '/src/shared/ui/assets/images';
|
||||
14
src/shared/constants/environment.ts
Normal file
14
src/shared/constants/environment.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import packageInfo from '../../../package.json';
|
||||
|
||||
// 어플리케이션 running environment (development, production, test)
|
||||
export const IS_LOCAL = import.meta.env.VITE_APP_ENV === 'local';
|
||||
export const IS_TEST = import.meta.env.VITE_APP_ENV === 'test';
|
||||
export const IS_DEV = import.meta.env.VITE_APP_ENV === 'development';
|
||||
export const IS_PROD = import.meta.env.VITE_APP_ENV === 'production';
|
||||
export const IS_STORYBOOK = !!import.meta.env.STORYBOOK;
|
||||
|
||||
export const IS_DEV_PHASE = IS_LOCAL || IS_DEV;
|
||||
|
||||
export const IS_MOCK_PHASE = import.meta.env.VITE_APP_ENV === 'mock';
|
||||
|
||||
export const RELEASE_VERSION = packageInfo.version;
|
||||
55
src/shared/constants/form.ts
Normal file
55
src/shared/constants/form.ts
Normal file
@@ -0,0 +1,55 @@
|
||||
import { FieldValues, RegisterOptions } from 'react-hook-form';
|
||||
|
||||
export const createFormOptions = <T extends FieldValues>(overrides?: Partial<Record<string, RegisterOptions<T>>>) => {
|
||||
const defaultOptions: Partial<Record<string, RegisterOptions<T>>> = {
|
||||
NAME: {
|
||||
required: '이름을 입력해 주세요.',
|
||||
pattern: { value: /^[가-힣]{2,}$/, message: '이름을 두 글자 이상 입력해 주세요.' },
|
||||
},
|
||||
BIRTH: {
|
||||
minLength: { value: 8, message: '생년월일을 8자리로 입력해 주세요.' },
|
||||
pattern: {
|
||||
value: /^\d{4}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])$/,
|
||||
message: '생년월일 형식에 맞게 입력해 주세요.',
|
||||
},
|
||||
validate: {
|
||||
isBeforeToday: (value: string | null | undefined) => {
|
||||
if (!value) return '생년월일을 입력해 주세요.';
|
||||
const birthDate = new Date(
|
||||
Number(value.slice(0, 4)),
|
||||
Number(value.slice(4, 6)) - 1,
|
||||
Number(value.slice(6, 8)),
|
||||
);
|
||||
const today = new Date();
|
||||
today.setHours(0, 0, 0, 0);
|
||||
return birthDate < today || '오늘 이전 날짜로 입력해 주세요.';
|
||||
},
|
||||
},
|
||||
required: '생년월일을 입력해 주세요.',
|
||||
},
|
||||
CARRIER: {
|
||||
required: '',
|
||||
},
|
||||
PHONE: {
|
||||
required: '휴대폰 번호를 입력해 주세요.',
|
||||
pattern: { value: /^01[016789][0-9]{7,8}$/, message: '올바르지 않은 휴대폰 형식입니다.' },
|
||||
},
|
||||
BANK_ACCOUNT: {
|
||||
required: '계좌번호를 입력해 주세요.',
|
||||
pattern: { value: /^[0-9]+$/, message: '숫자만 입력 가능합니다.' },
|
||||
},
|
||||
BANK_CODE: {
|
||||
required: '은행을 선택해 주세요.',
|
||||
},
|
||||
ALIAS_NM: {
|
||||
required: true,
|
||||
pattern: { value: /^[0-9]+$/, message: '숫자만 입력 가능합니다.' },
|
||||
},
|
||||
};
|
||||
return {
|
||||
...defaultOptions,
|
||||
...overrides,
|
||||
};
|
||||
};
|
||||
|
||||
export const MAX_INPUT_NUMBER = 999999999999999;
|
||||
33
src/shared/constants/local-storage.ts
Normal file
33
src/shared/constants/local-storage.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
export enum StorageKeys {
|
||||
TokenType = 'TOKEN_TYPE',
|
||||
AccessToken = 'ACCESS_TOKEN',
|
||||
RefreshToken = 'REFRESH_TOKEN',
|
||||
AccessTokenExpiresIn = 'ACCESS_TOKEN_EXPIRE_IN',
|
||||
RefreshTokenExpiresIn = 'REFRESH_TOKEN_EXPIRES_IN',
|
||||
MenuGrants = 'MENU_GRANTS',
|
||||
Usrid = 'USRID',
|
||||
ClientAddressIP = 'ClIENT_ADDRESS_IP',
|
||||
Requires2FA = 'REQUIRES_2FA',
|
||||
BottomBannerClose = 'BOTTOM_BANNER_CLOSE',
|
||||
RootStore = 'ROOT_STORE',
|
||||
|
||||
|
||||
requestId = 'REQUEST_ID',
|
||||
|
||||
Jwt = 'JWT',
|
||||
RequestId = 'REQUEST_ID',
|
||||
|
||||
HasBioHardware = 'HAS_BIO_HARDWARE',
|
||||
DeviceUniqueId = 'DEVICE_UNIQUE_ID',
|
||||
AppVersion = 'APP_VERSION',
|
||||
AppColor = 'APP_COLOR',
|
||||
RedirectPath = 'REDIRECT_PATH',
|
||||
Platform = 'PLATFORM',
|
||||
AppPagingSpeed = 'APP_PAGING_SPEED', // deprecated
|
||||
ScannedQrCode = 'SCANNED_QR_CODE',
|
||||
HasPushTokenSent = 'HAS_PUSH_TOKEN_SENT',
|
||||
SetFont = 'SET_FONT',
|
||||
|
||||
LogOut = 'LOGOUT',
|
||||
|
||||
}
|
||||
1
src/shared/constants/locales/en/index.ts
Normal file
1
src/shared/constants/locales/en/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export * from './start';
|
||||
5
src/shared/constants/locales/en/start.ts
Normal file
5
src/shared/constants/locales/en/start.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
export const start = {
|
||||
alreadyRegistered: 'already Registered?',
|
||||
startConvenientSpending: 'Start enjoying convenient spending with an e-wallet.',
|
||||
start: 'Start',
|
||||
};
|
||||
5
src/shared/constants/locales/index.ts
Normal file
5
src/shared/constants/locales/index.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
import * as localeEn from './en';
|
||||
import * as localeKr from './kr';
|
||||
|
||||
export const kr = { ...localeKr };
|
||||
export const en = { ...localeEn };
|
||||
128
src/shared/constants/locales/kr/common.ts
Normal file
128
src/shared/constants/locales/kr/common.ts
Normal file
@@ -0,0 +1,128 @@
|
||||
export const common = {
|
||||
confirm: '확인',
|
||||
depositToken: '예금 토큰',
|
||||
eMoneyToken: '이머니 토큰',
|
||||
voucher: '바우처',
|
||||
transferDeposit: '전환 입금',
|
||||
payment: '결제',
|
||||
remittance: '송금',
|
||||
switchDeposit: '예금 전환',
|
||||
topUp: '충전',
|
||||
conversion: '예금 토큰 전환',
|
||||
transactionNotAllowed: '결제/송금/예금 전환 불가',
|
||||
transferDepositTokenConversionNotAllowed: '송금/예금 토큰 전환 불가',
|
||||
paymentRemittanceNotAllowed: '결제/송금 불가',
|
||||
hideBalance: '잔액 숨기기',
|
||||
name: '이름',
|
||||
idNumber7Digits: '주민등록번호 7자리(생년월일/성별)',
|
||||
birthDate8Digits: '생년월일 (8자리)',
|
||||
selectCarrier: '통신사 선택',
|
||||
phoneNumberWithoutHyphens: '휴대폰 번호 (-없이 입력)',
|
||||
lastLoginDate: '최근 접속 일시',
|
||||
userSuffix: '님',
|
||||
transactionRestriction: '거래제한',
|
||||
issuedAccountNumber: '발급 계좌 번호',
|
||||
manageMyWallet: '내 지갑 관리',
|
||||
authenticationAndSecurity: '인증/보안',
|
||||
notice: '공지사항',
|
||||
serviceSettings: '서비스 설정',
|
||||
checkLinkedAccount: '연동 계좌 확인',
|
||||
notificationSettings: '알림설정',
|
||||
myVoucherStatus: '내 바우처 현황',
|
||||
serviceGuide: '서비스 안내',
|
||||
usageGuide: '이용 안내',
|
||||
usageLocationGuide: '사용처 안내',
|
||||
customerSupport: '고객 지원',
|
||||
frequentlyAskedQuestions: '자주 묻는 질문',
|
||||
oneOnOneInquiry: '1:1 문의',
|
||||
oneOnOneInquirySubmit: '1:1 문의하기',
|
||||
phoneInquiry: '전화 문의',
|
||||
termsAndConditions: '약관 및 이용 동의',
|
||||
privacyPolicy: '개인정보 처리방침',
|
||||
appVersion: '앱 버전',
|
||||
largeFontSetting: '큰 폰트설정',
|
||||
logout: '로그아웃',
|
||||
cancel: '취소',
|
||||
logoutAction: '로그아웃 하기',
|
||||
customerCenter: '고객센터',
|
||||
weekdays: '평일',
|
||||
register: '등록하기',
|
||||
edit: '수정',
|
||||
delete: '삭제',
|
||||
total: '전체',
|
||||
detail: '상세',
|
||||
search: '검색',
|
||||
resetPin: '간편 비밀번호 재설정',
|
||||
shuffle: '재배열',
|
||||
close: '닫기',
|
||||
reset: '재설정',
|
||||
proceedWithRegistration: '가입진행',
|
||||
selectBank: '은행 선택',
|
||||
next: ' 다음',
|
||||
deleteAll: '전체삭제',
|
||||
start: '시작하기',
|
||||
allUsageHistoryView: '전체 이용 내역 조회',
|
||||
selectInquiryPeriod: '조회 기간 선택',
|
||||
previousMonth: '이전달',
|
||||
nextMonth: '다음달',
|
||||
selectMonthArrow: '월 선택 화살표',
|
||||
tokenSelect: '토큰 선택',
|
||||
selectArrow: '선택 화살표',
|
||||
totalOwnedTokens: '총 보유 토큰',
|
||||
viewAllUsageHistory: '전체 이용 내역 보기',
|
||||
transactionType: '거래 구분',
|
||||
usageToken: '이용 토큰',
|
||||
availableAmount: '{{pageLabel}} 가능 금액',
|
||||
transfer: '전송',
|
||||
scanWalletQRCode: '지갑번호 QR 스캔하기',
|
||||
bankLogo: '은행로고',
|
||||
recentRecipient: '최근 보는 사람',
|
||||
enterWalletNumberOrScanQRCode: '지갑 번호 입력 또는 QR코드 스캔',
|
||||
insufficientBalanceConversionNotAllowed: '잔액 부족 전환 불가',
|
||||
answerComplete: '답변완료',
|
||||
inProgress: '확인중',
|
||||
newInquiry: '새로운 문의 작성하기',
|
||||
selectCategory: '카테고리 선택',
|
||||
verificationRequest: '인증요청',
|
||||
inquiryTitle: '문의 제목',
|
||||
resend: '재요청',
|
||||
newPost: '새글',
|
||||
latestVersion: '최신 버전',
|
||||
tokenInfo: '토큰 정보',
|
||||
update: '업데이트',
|
||||
recentUsageHistory: '최근이용내역',
|
||||
linkedAccount: '연동계좌',
|
||||
voucherIcon: '바우처아이콘',
|
||||
notification: '알림',
|
||||
qrNfcScan: 'QR/NFC 스캔',
|
||||
showQr: 'QR 보여주기',
|
||||
qrScan: 'QR 스캔하기',
|
||||
qrPayment: 'QR 결제하기',
|
||||
applyVoucherBenefits: '바우처 혜택 적용',
|
||||
noApply: '미적용',
|
||||
validTime: '유효시간',
|
||||
reissue: '재발급',
|
||||
retry: '재시도',
|
||||
goBack: '돌아가기',
|
||||
back: '뒤로가기',
|
||||
agreeToAllTerms: '약관 전체 동의하기',
|
||||
viewTerms: '약관보기',
|
||||
doNotShowAgainToday: '오늘은 다시 보지 않기',
|
||||
oneWonVerification: '1원 인증하기',
|
||||
change: '변경하기',
|
||||
changeAccount: '계좌변경',
|
||||
deleteWaller: '지갑만들기',
|
||||
viewQRCode: 'QR코드보기',
|
||||
createWallet: '지갑 만들기',
|
||||
hideTokenBalance: '토큰 잔액 숨기기',
|
||||
tokenAndPayment: '토큰ㆍ결제',
|
||||
security: '보안',
|
||||
activityAndNews: '활동ㆍ소식',
|
||||
receiveAllNotifications: '모든 알림 받기',
|
||||
pushNotificationSettings: '푸시 알림 설정',
|
||||
pushNotificationInfo: '푸시알림정보',
|
||||
fontSizeSetting: '큰폰트 설정',
|
||||
useLargeFont: '큰폰트 사용',
|
||||
myTokenList: '내 트콘 목록',
|
||||
help: '도움말',
|
||||
};
|
||||
1
src/shared/constants/locales/kr/glossary.ts
Normal file
1
src/shared/constants/locales/kr/glossary.ts
Normal file
@@ -0,0 +1 @@
|
||||
export const glossary = {};
|
||||
4
src/shared/constants/locales/kr/index.ts
Normal file
4
src/shared/constants/locales/kr/index.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
export * from './validation';
|
||||
export * from './common';
|
||||
export * from './text';
|
||||
export * from './pin';
|
||||
31
src/shared/constants/locales/kr/pin.ts
Normal file
31
src/shared/constants/locales/kr/pin.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
export const pin = {
|
||||
titleSetPin: `간편 비밀번호 설정`,
|
||||
messageSetPin: `생년월일, 휴대폰 번호 또는 \n동일하거나 연속된 숫자는 등록이 제한됩니다.`,
|
||||
titleSetPinConfirm: `간편 비밀번호 확인`,
|
||||
messageSetPinConfirm: `동일한 비밀번호를 한번 더 입력해 주세요.`,
|
||||
|
||||
titleResetInput: `비밀번호 입력`,
|
||||
messageResetInput: `사용 중인 비밀번호를 입력해 주세요.`,
|
||||
|
||||
titleResetPin: `신규 비밀번호 설정`,
|
||||
messageResetPin: `새롭게 사용할 비밀번호를 입력해 주세요.`,
|
||||
titleResetPinConfirm: `신규 비밀번호 다시 입력`,
|
||||
messageResetPinConfirm: `동일한 비밀번호를 한번 더 입력해 주세요.`,
|
||||
completeResetPin: `간편 비밀번호를 변경했습니다.`,
|
||||
|
||||
titleInputPin: `간편 비밀번호 입력`,
|
||||
messageInputPin: `비밀번호 6자리를 입력해 주세요.`,
|
||||
|
||||
messageInputBio: `생체인증 사용을 위해 비밀번호를 입력해 주세요.`,
|
||||
|
||||
titlePin: `비밀번호 입력`,
|
||||
|
||||
errorResetInput: `간편 비밀번호가 초기화되었습니다. \n비밀번호를 다시 설정해 주세요.`,
|
||||
errorResetPin: `생년월일, 휴대폰 번호 또는 동일하거나 연속된 숫자는 등록이 제한됩니다.`,
|
||||
errorMaxPin: `다시 입력할 수 있는 횟수를 초과했습니다.\n비멀번호 재설정 후 다시 시도해 주세요.`,
|
||||
errorMaxIncorrectPin: `다시 입력할 수 있는 횟수를 초과했습니다. \n간편 비밀번호를 처음부터 설정해 주세요.`,
|
||||
errorResetMaxIncorrectPin: `다시 입력할 수 있는 횟수를 초과했습니다. \n신규 비밀번호를 처음부터 설정해 주세요.`,
|
||||
errorDifferentInputPin: `{{cnt}}회 틀렸습니다. ({{cnt}}/5)\n5회 이상 틀리면 정보가 초기화됩니다.`,
|
||||
errorDifferentPin: `먼저 입력한 비밀번호와 다릅니다. \n다시 확인해 주세요.({{cnt}}/5)`,
|
||||
errorCheckBio: `생체 정보를 확인할 수 없습니다. \n처음부터 다시 시도해 주세요.`,
|
||||
};
|
||||
28
src/shared/constants/locales/kr/text.ts
Normal file
28
src/shared/constants/locales/kr/text.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
export const text = {
|
||||
alreadyRegistered: '이미 가입하셨나요?',
|
||||
startConvenientSpending: '전자지갑으로\n편리한 소비를 시작해 보세요.',
|
||||
searchPlaceholder: '사용처, 사람 이름으로 검색해 보세요.',
|
||||
recentYearTransactionsOnly: '최근 1년 간의 거래 기록만 조회할 수 있습니다.',
|
||||
transactionInfo: '이용 내역 반영까지 최대 5분이 소용될 수 있습니다.',
|
||||
enterAmount: '{{pageLabel}}할 금액을 입력해 주세요.',
|
||||
enterWalletNumberForBankRecommendation: '지갑 번호를 입력하시면 은행을 추천해 드려요.',
|
||||
howCanWeHelp: '무엇을 도와드릴까요?',
|
||||
fmTokenCopied: 'FCM 토큰이 복사되었습니다.',
|
||||
unableToResolveIssue: '문제를 해결하지 못하셨나요?',
|
||||
whereToSend: '어디로 보낼까요?',
|
||||
linkedAccountChangeConfirmation: '연동 꼐좌 정보를 변경하시겠습니까?',
|
||||
walletAddressCopied: '지갑 주소가 복사되었습니다.',
|
||||
accountNumberCopied: '계좌번호가 복사되었습니다.',
|
||||
walletCreationRequired: '지갑 생성 후\n메뉴를 사용할 수 있습니다.\n\n지갑을 만들고 다시 시도해 주세요.',
|
||||
hideBalanceDescription: '설정 시, 앱 화면에서 잔액이 숨겨집니다.',
|
||||
tokenAndPaymentDescription: '결제, 송금 등 토큰 이용 시 앱 푸시 알림을 받습니다.',
|
||||
activityNewsDescription: '공지사항, 1:1 문의 답변 등 앱 내 활동/소식 관련 앱 푸시 알림을 받습니다.',
|
||||
usefulServiceNotifications:
|
||||
'서비스 이용에 유용한 알림을 앱 푸시로 받아보세요.\n받고 싶지 않은 알림은 언제든 끌 수 있어요.',
|
||||
securityNotifications: '보안 관련 앱 푸시 알림을 받습니다.',
|
||||
essentialServiceInfoPushNotification:
|
||||
'서비스 이용에 필수적인 정보에 대한 알림은 설정과 관계없이 앱 푸시 알림이 발송됩니다.',
|
||||
largeFontWalletAndTransfer: '지갑조회, 이체화면 등의 글자를 크게 볼 수 있습니다.',
|
||||
tokenOverviewMessage:
|
||||
'가지고 있는 모든 토큰을 확인할 수 있어요.\nㆍ 예금 토큰: 예금 기반의 토큰\nㆍ 이머니토큰: 예금 토큰 기반의 토큰',
|
||||
};
|
||||
62
src/shared/constants/locales/kr/validation.ts
Normal file
62
src/shared/constants/locales/kr/validation.ts
Normal file
@@ -0,0 +1,62 @@
|
||||
export const validation = {
|
||||
authenticationComplete: '본인 인증이 완료되었습니다.',
|
||||
authenticationFail: '본인 인증이 실패하였습니다.',
|
||||
verificationCodeSent: '인증번호가 발송되었습니다.',
|
||||
authenticationMismatch: '본인인증 요청 정보와 \n기존 회원정보가 불일치 합니다.',
|
||||
verificationCodeReset: '인증번호가 재요청 되었습니다.',
|
||||
timeExceeded: '시간이 초과되었어요. 재요청 버튼을 눌러주세요.',
|
||||
enterNamePrompt: '이름을 입력해 주세요.',
|
||||
enterAtLeastTwoCharacters: '이름을 구 글자 이상 입력해 주세요.',
|
||||
enterKorean: '한글을 입력해 주세요',
|
||||
enterUpTo20Characters: '최대 20자까지 입력해 주세요.',
|
||||
enterBirthdate: '생년월일을 입력해 주세요.',
|
||||
enterBirthdateIn8Digits: '생년월일을 8자리로 입력ㄱ해 주세요.',
|
||||
enterBirthdateInCorrectFormat: '생년월일 형식에 맞게 입력해 주세요.',
|
||||
enterDateAfter1900: '1900-01-01 이후 날짜로 입력해 주세요.',
|
||||
enterDateBeforeToday: '오늘 이전 날짜로 입력해 주세요.',
|
||||
enterPhoneNumber: '휴대폰 번호를 입력해 주세요.',
|
||||
invalidPhoneNumberFormat: '올바르지 않은 휴대폰 형식입니다.',
|
||||
didNotReceiveVerificationText: '인증 문자를 받지 못하셨나요?',
|
||||
invalidVerificationCode: '올바르지 않은 인증번호입니다. 다시 시도해 주세요.',
|
||||
numbersOnlyAllowed: '숫자만 입력 가능합니다.',
|
||||
enterSixDigits: '인증번호 6자리를 입력해 주세요.',
|
||||
enterVerificationCode: '인증번호를 입력해 주세요.',
|
||||
enter6DigitVerificationCode: '인증번호 6자리 입력',
|
||||
enterResidentNumber: '주민등록번호를 입력해 주세요.',
|
||||
enterResidentNumberIn7Digit: '주민등록번호 7자리를 입력해 주세요.',
|
||||
enterResidentNumberInCorrectFormat: '주민등록번호 형식에 맞게 입력해 주세요.',
|
||||
alreadyRegisteredUser: '이미 가입된 사용자 정보입니다.\n간편 비밀번호를 재설정 하는 화면으로\n이동하시겠습니까?',
|
||||
noRegisteredInformation: '가입된 정보가 ㅇ벗습니다.\n회원가입을 진행하시겠습니까?',
|
||||
enterShopNumberDirectly: '사용처 번호를\n직접 입력해 주세요.',
|
||||
enterInquiryDetails: '문의 내용을 입력해주세요.',
|
||||
chooseCategory: '카테고리를 선택해 주세요.',
|
||||
deleteInquiryConfirmation: '작성하신\n1:1 문의를 삭제하시겠습니까?',
|
||||
onlyNumbersAllowed: '숫자만 입력 가능합니다.',
|
||||
enterNumber: '번호를 입력해 주세요.',
|
||||
logoutConfirmation: '로그아웃 하시겠습니까?\n로그아웃 후\n인증을 통해 다시 로그인 할 수 있습니다.',
|
||||
noPostAvailable: '등록된 게시물이 없습니다.',
|
||||
noRemittanceHistory: '송금 내역이 없습니다.',
|
||||
noHistoryAvailable: '이용내역이 없습니다.',
|
||||
noInquiries: '등록하신 1:1 문의가 없습니다.',
|
||||
noNoticesAvailable: '등록된 공지사항이 없습니다.',
|
||||
noVouchersAvailable: '보유하고 계신 바우처가 없습니다.',
|
||||
verificationTimeExpired: '인증 시간이 만료되었습니다.',
|
||||
authInfoResetWarning: '지금 페이지를 벗어나시면 인증된 계좌정보가 초기화 됩니다.',
|
||||
returnToBeginning: '처음으로 돌아가시겠습니까?',
|
||||
accountInfoResetWarning: '지금 페이지를 벗어나시면 인증된 계좌정보가 초기화 됩니다.',
|
||||
invalidAuthInfo: '인증정보가 올바르지 않스빈다.\n다시 시도해 주세요.',
|
||||
usingLatestVersion: '현재 최신 버전을 사용 중입니다.',
|
||||
newVersionAvailable: '새로운 버전이 사용 가능합니다.',
|
||||
blockedWalletMessage:
|
||||
'현재 일부 거래가 제한된 상태입니다.\n관련 문의 사항을 1:1 문의 또는\n고객센터를 이용해 주세요.',
|
||||
accountInfoCheckError:
|
||||
'계좌 정보를 확인할 수 없습니다.\n잘못된 정보로 5회 이상 실패 시\n하루동안 인증이 제한될 수 있습니다.',
|
||||
accountAuthAttemptExceeded:
|
||||
'계좌 인증 확인 횟수를 초과하였습니다.\n내일 다시 시도해 주세요.\n\n지속적으로 오류가 발생하거나\n추가 문의 사항이 있으시면 1:1문의 또는 고객센터를 이용해 주세요.',
|
||||
accountInfoInvalid: '계좌 정보를 확인할 수 없습니다.\n입력하신 정보를\n다시 한 번 확인해 주세요.',
|
||||
walletDeletionConfirmation: '지갑을 삭제하시겠습니까?\n지갑을 삭제 후에도\n인증을 통해 다시 만들 수 있습니다.',
|
||||
temporaryErrorOccurred: '일시적인 오류가 발생하였습니다.',
|
||||
tryAgainLater: '잠시 후 다시 시도해주세요.',
|
||||
networkConnectionError: '현재 네트워크 연결이 원활하지 않습니다.\n데이터 또는 Wi-Fi 연결 상태를\n확인해 주세요.',
|
||||
inaccessiblePage: '접근할 수 없는 페이지입니다.',
|
||||
};
|
||||
28
src/shared/constants/native-function.ts
Normal file
28
src/shared/constants/native-function.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
export enum NativeFunction {
|
||||
ExitApp = 'exitApp',
|
||||
Biometrics = 'biometrics',
|
||||
PaymentQRScan = 'PaymentQRScan',
|
||||
WalletQRScan = 'WalletQRScan',
|
||||
IDScan = 'IDScan',
|
||||
PassportScan = 'PassportScan',
|
||||
BusinessLicenseScan = 'BusinessLicenseScan',
|
||||
SetStorage = 'setStorage',
|
||||
GetStorage = 'getStorage',
|
||||
ClearStorage = 'clearStorage',
|
||||
BeginNfcReaderMode = 'beginNfcReaderMode',
|
||||
EndNfcReaderMode = 'endNfcReaderMode',
|
||||
TransmitNFCBytes = 'transmitNFCBytes',
|
||||
SetAppColor = 'setAppColor',
|
||||
CopyToClipboard = 'copyToClipboard',
|
||||
OpenAppSetting = 'openAppSetting',
|
||||
OpenSecuritySetting = 'openSecuritySetting',
|
||||
OpenWebview = 'openWebview',
|
||||
GoBack = 'goBack',
|
||||
GetNotificationToken = 'getNotificationToken',
|
||||
CanGoBack = 'canGoBack',
|
||||
PhoneCall = 'phoneCall',
|
||||
LocationPermission = 'locationPermission',
|
||||
CheckLocationPermission = 'checkLocationPermission',
|
||||
RootNavigation = 'rootNavigation',
|
||||
RequestNotification = 'requestNotification',
|
||||
}
|
||||
4
src/shared/constants/native-message.ts
Normal file
4
src/shared/constants/native-message.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
export enum NativeMessage {
|
||||
HardwareBackPress = 'hardwareBackPress',
|
||||
WebViewNavigate = 'webViewNavigate',
|
||||
}
|
||||
229
src/shared/constants/paths.ts
Normal file
229
src/shared/constants/paths.ts
Normal file
@@ -0,0 +1,229 @@
|
||||
import { ROUTE_NAMES, RouteNamesType } from '@/shared/constants/route-names';
|
||||
|
||||
export type PathType = RouteNamesType[keyof RouteNamesType];
|
||||
const generatePath = (base: string, path?: PathType): string => {
|
||||
base = base.replace(/\/\*/g, '');
|
||||
if (typeof path === 'string') {
|
||||
path = path?.replace(/:.*/, '');
|
||||
}
|
||||
let rs = path ? `${base}/${path as string}` : base;
|
||||
return rs;
|
||||
};
|
||||
|
||||
export const PATHS: RouteNamesType = {
|
||||
home: generatePath(ROUTE_NAMES.home),
|
||||
transaction: {
|
||||
base: generatePath(ROUTE_NAMES.transaction.base),
|
||||
allTransaction: {
|
||||
base: generatePath(`${ROUTE_NAMES.transaction.base}${ROUTE_NAMES.transaction.allTransaction.base}`),
|
||||
list: generatePath(
|
||||
`${ROUTE_NAMES.transaction.base}${ROUTE_NAMES.transaction.allTransaction.base}`,
|
||||
ROUTE_NAMES.transaction.allTransaction.list,
|
||||
),
|
||||
detail: generatePath(
|
||||
`${ROUTE_NAMES.transaction.base}${ROUTE_NAMES.transaction.allTransaction.base}`,
|
||||
ROUTE_NAMES.transaction.allTransaction.detail,
|
||||
),
|
||||
cancel: generatePath(
|
||||
`${ROUTE_NAMES.transaction.base}${ROUTE_NAMES.transaction.allTransaction.base}`,
|
||||
ROUTE_NAMES.transaction.allTransaction.cancel,
|
||||
),
|
||||
},
|
||||
cashReceit: {
|
||||
base: generatePath(`${ROUTE_NAMES.transaction.base}${ROUTE_NAMES.transaction.cashReceit.base}`),
|
||||
list: generatePath(
|
||||
`${ROUTE_NAMES.transaction.base}${ROUTE_NAMES.transaction.cashReceit.base}`,
|
||||
ROUTE_NAMES.transaction.cashReceit.list,
|
||||
),
|
||||
detail: generatePath(
|
||||
`${ROUTE_NAMES.transaction.base}${ROUTE_NAMES.transaction.cashReceit.base}`,
|
||||
ROUTE_NAMES.transaction.cashReceit.detail,
|
||||
),
|
||||
handWrittenIssuance: generatePath(
|
||||
`${ROUTE_NAMES.transaction.base}${ROUTE_NAMES.transaction.cashReceit.base}`,
|
||||
ROUTE_NAMES.transaction.cashReceit.handWrittenIssuance,
|
||||
),
|
||||
},
|
||||
escro: {
|
||||
base: generatePath(`${ROUTE_NAMES.transaction.base}${ROUTE_NAMES.transaction.escro.base}`),
|
||||
list: generatePath(
|
||||
`${ROUTE_NAMES.transaction.base}${ROUTE_NAMES.transaction.escro.base}`,
|
||||
ROUTE_NAMES.transaction.escro.list,
|
||||
),
|
||||
detail: generatePath(
|
||||
`${ROUTE_NAMES.transaction.base}${ROUTE_NAMES.transaction.escro.base}`,
|
||||
ROUTE_NAMES.transaction.escro.detail,
|
||||
),
|
||||
},
|
||||
billing: {
|
||||
base: generatePath(`${ROUTE_NAMES.transaction.base}${ROUTE_NAMES.transaction.billing.base}`),
|
||||
list: generatePath(
|
||||
`${ROUTE_NAMES.transaction.base}${ROUTE_NAMES.transaction.billing.base}`,
|
||||
ROUTE_NAMES.transaction.billing.list,
|
||||
),
|
||||
detail: generatePath(
|
||||
`${ROUTE_NAMES.transaction.base}${ROUTE_NAMES.transaction.billing.base}`,
|
||||
ROUTE_NAMES.transaction.billing.detail,
|
||||
),
|
||||
paymentRequest: generatePath(
|
||||
`${ROUTE_NAMES.transaction.base}${ROUTE_NAMES.transaction.billing.base}`,
|
||||
ROUTE_NAMES.transaction.billing.paymentRequest,
|
||||
),
|
||||
}
|
||||
},
|
||||
settlement: {
|
||||
base: generatePath(ROUTE_NAMES.settlement.base),
|
||||
calendar: generatePath(ROUTE_NAMES.settlement.base, ROUTE_NAMES.settlement.calendar),
|
||||
list: generatePath(ROUTE_NAMES.settlement.base, ROUTE_NAMES.settlement.list),
|
||||
detail: generatePath(ROUTE_NAMES.settlement.base, ROUTE_NAMES.settlement.detail),
|
||||
},
|
||||
businessMember: {
|
||||
base: generatePath(ROUTE_NAMES.businessMember.base),
|
||||
info: generatePath(ROUTE_NAMES.businessMember.base, ROUTE_NAMES.businessMember.info),
|
||||
registrationStatus: generatePath(ROUTE_NAMES.businessMember.base, ROUTE_NAMES.businessMember.registrationStatus),
|
||||
},
|
||||
payment: {
|
||||
base: generatePath(ROUTE_NAMES.payment.base),
|
||||
info: generatePath(ROUTE_NAMES.payment.base, ROUTE_NAMES.payment.info),
|
||||
dataNotification: generatePath(ROUTE_NAMES.payment.base, ROUTE_NAMES.payment.dataNotification),
|
||||
},
|
||||
account: {
|
||||
base: generatePath(ROUTE_NAMES.account.base),
|
||||
user: {
|
||||
base: generatePath(`${ROUTE_NAMES.account.base}${ROUTE_NAMES.account.user.base}`),
|
||||
manage: generatePath(
|
||||
`${ROUTE_NAMES.account.base}${ROUTE_NAMES.account.user.base}`,
|
||||
ROUTE_NAMES.account.user.manage,
|
||||
),
|
||||
loginAuthInfo: generatePath(
|
||||
`${ROUTE_NAMES.account.base}${ROUTE_NAMES.account.user.base}`,
|
||||
ROUTE_NAMES.account.user.loginAuthInfo,
|
||||
),
|
||||
accountAuth: generatePath(
|
||||
`${ROUTE_NAMES.account.base}${ROUTE_NAMES.account.user.base}`,
|
||||
ROUTE_NAMES.account.user.accountAuth,
|
||||
),
|
||||
menuAuth: generatePath(
|
||||
`${ROUTE_NAMES.account.base}${ROUTE_NAMES.account.user.base}`,
|
||||
ROUTE_NAMES.account.user.menuAuth,
|
||||
),
|
||||
addAccount: generatePath(
|
||||
`${ROUTE_NAMES.account.base}${ROUTE_NAMES.account.user.base}`,
|
||||
ROUTE_NAMES.account.user.addAccount,
|
||||
),
|
||||
},
|
||||
password: {
|
||||
base: generatePath(`${ROUTE_NAMES.account.base}${ROUTE_NAMES.account.password.base}`),
|
||||
manage: generatePath(
|
||||
`${ROUTE_NAMES.account.base}${ROUTE_NAMES.account.password.base}`,
|
||||
ROUTE_NAMES.account.password.manage,
|
||||
),
|
||||
modifyLoginPassword: generatePath(
|
||||
`${ROUTE_NAMES.account.base}${ROUTE_NAMES.account.password.base}`,
|
||||
ROUTE_NAMES.account.password.modifyLoginPassword,
|
||||
),
|
||||
}
|
||||
},
|
||||
tax: {
|
||||
base: generatePath(ROUTE_NAMES.tax.base),
|
||||
invoice: {
|
||||
base: generatePath(`${ROUTE_NAMES.tax.base}${ROUTE_NAMES.tax.invoice.base}`),
|
||||
list: generatePath(
|
||||
`${ROUTE_NAMES.tax.base}${ROUTE_NAMES.tax.invoice.base}`,
|
||||
ROUTE_NAMES.tax.invoice.list,
|
||||
),
|
||||
detail: generatePath(
|
||||
`${ROUTE_NAMES.tax.base}${ROUTE_NAMES.tax.invoice.base}`,
|
||||
ROUTE_NAMES.tax.invoice.detail,
|
||||
),
|
||||
},
|
||||
vatReference: generatePath(ROUTE_NAMES.tax.base, ROUTE_NAMES.tax.vatReference),
|
||||
},
|
||||
additionalService: {
|
||||
base: generatePath(ROUTE_NAMES.additionalService.base),
|
||||
intro: generatePath(ROUTE_NAMES.additionalService.base, ROUTE_NAMES.additionalService.intro),
|
||||
arsCardPayment: {
|
||||
base: generatePath(`${ROUTE_NAMES.additionalService.base}${ROUTE_NAMES.additionalService.arsCardPayment.base}`),
|
||||
list: generatePath(
|
||||
`${ROUTE_NAMES.additionalService.base}${ROUTE_NAMES.additionalService.arsCardPayment.base}`,
|
||||
ROUTE_NAMES.additionalService.arsCardPayment.list,
|
||||
),
|
||||
request: generatePath(
|
||||
`${ROUTE_NAMES.additionalService.base}${ROUTE_NAMES.additionalService.arsCardPayment.base}`,
|
||||
ROUTE_NAMES.additionalService.arsCardPayment.request,
|
||||
),
|
||||
requestSuccess: generatePath(
|
||||
`${ROUTE_NAMES.additionalService.base}${ROUTE_NAMES.additionalService.arsCardPayment.base}`,
|
||||
ROUTE_NAMES.additionalService.arsCardPayment.requestSuccess,
|
||||
),
|
||||
},
|
||||
keyInPayment: generatePath(ROUTE_NAMES.additionalService.base, ROUTE_NAMES.additionalService.keyInPayment),
|
||||
smsPaymentNotification: generatePath(ROUTE_NAMES.additionalService.base, ROUTE_NAMES.additionalService.smsPaymentNotification),
|
||||
accountHolderSearch: generatePath(ROUTE_NAMES.additionalService.base, ROUTE_NAMES.additionalService.accountHolderSearch),
|
||||
accountHolderAuth: generatePath(ROUTE_NAMES.additionalService.base, ROUTE_NAMES.additionalService.accountHolderAuth),
|
||||
linkPayment: generatePath(ROUTE_NAMES.additionalService.base, ROUTE_NAMES.additionalService.linkPayment),
|
||||
kakaoPaymentNotification: generatePath(ROUTE_NAMES.additionalService.base, ROUTE_NAMES.additionalService.kakaoPaymentNotification),
|
||||
fundTransfer: generatePath(ROUTE_NAMES.additionalService.base, ROUTE_NAMES.additionalService.fundTransfer),
|
||||
settlementAgency: generatePath(ROUTE_NAMES.additionalService.base, ROUTE_NAMES.additionalService.settlementAgency),
|
||||
paymentAgency: generatePath(ROUTE_NAMES.additionalService.base, ROUTE_NAMES.additionalService.paymentAgency),
|
||||
},
|
||||
support: {
|
||||
base: generatePath(ROUTE_NAMES.support.base),
|
||||
notice: {
|
||||
base: generatePath(`${ROUTE_NAMES.support.base}${ROUTE_NAMES.support.notice.base}`),
|
||||
list: generatePath(
|
||||
`${ROUTE_NAMES.support.base}${ROUTE_NAMES.support.notice.base}`,
|
||||
ROUTE_NAMES.support.notice.list,
|
||||
),
|
||||
detail: generatePath(
|
||||
`${ROUTE_NAMES.support.base}${ROUTE_NAMES.support.notice.base}`,
|
||||
ROUTE_NAMES.support.notice.detail,
|
||||
),
|
||||
},
|
||||
faq: {
|
||||
base: generatePath(`${ROUTE_NAMES.support.base}${ROUTE_NAMES.support.faq.base}`),
|
||||
list: generatePath(
|
||||
`${ROUTE_NAMES.support.base}${ROUTE_NAMES.support.faq.base}`,
|
||||
ROUTE_NAMES.support.notice.list,
|
||||
),
|
||||
detail: generatePath(
|
||||
`${ROUTE_NAMES.support.base}${ROUTE_NAMES.support.faq.base}`,
|
||||
ROUTE_NAMES.support.faq.detail,
|
||||
),
|
||||
},
|
||||
qna: {
|
||||
base: generatePath(`${ROUTE_NAMES.support.base}${ROUTE_NAMES.support.qna.base}`),
|
||||
list: generatePath(
|
||||
`${ROUTE_NAMES.support.base}${ROUTE_NAMES.support.qna.base}`,
|
||||
ROUTE_NAMES.support.qna.list,
|
||||
),
|
||||
detail: generatePath(
|
||||
`${ROUTE_NAMES.support.base}${ROUTE_NAMES.support.qna.base}`,
|
||||
ROUTE_NAMES.support.qna.detail,
|
||||
),
|
||||
},
|
||||
},
|
||||
setting: generatePath(ROUTE_NAMES.setting),
|
||||
alarm: {
|
||||
base: generatePath(ROUTE_NAMES.alarm.base),
|
||||
list: generatePath(ROUTE_NAMES.alarm.base, ROUTE_NAMES.alarm.list),
|
||||
},
|
||||
};
|
||||
|
||||
export const BACK_BLOCKED_PATHS = {
|
||||
/*
|
||||
[PATHS.home]: [
|
||||
PATHS.intro,
|
||||
PATHS.start,
|
||||
PATHS.appAuth,
|
||||
PATHS.mobileVerification,
|
||||
PATHS.signUp.bioPinNumber,
|
||||
PATHS.signUp.inputPinNumber,
|
||||
PATHS.signUp.setPinNumber,
|
||||
PATHS.signUp.reSetBiometricAuth,
|
||||
PATHS.signUp.setBiometricAuth,
|
||||
|
||||
],
|
||||
*/
|
||||
//[PATHS.appAuth]: [PATHS.intro],
|
||||
};
|
||||
198
src/shared/constants/route-names.ts
Normal file
198
src/shared/constants/route-names.ts
Normal file
@@ -0,0 +1,198 @@
|
||||
export const ROUTE_NAMES = {
|
||||
home: '/home',
|
||||
transaction: {
|
||||
base: '/transaction/*',
|
||||
allTransaction: {
|
||||
base: '/all-transaction/*',
|
||||
list: 'list',
|
||||
detail: 'detail/:tid',
|
||||
cancel: 'cancel',
|
||||
},
|
||||
cashReceit: {
|
||||
base: '/cash-receit/*',
|
||||
list: 'list',
|
||||
detail: 'detail/:tid',
|
||||
handWrittenIssuance: 'hand-written-issuance',
|
||||
},
|
||||
escro: {
|
||||
base: '/escro/*',
|
||||
list: 'list',
|
||||
detail: 'detail/:tid',
|
||||
},
|
||||
billing: {
|
||||
base: '/billing/*',
|
||||
list: 'list',
|
||||
detail: 'detail/:tid',
|
||||
paymentRequest: 'payment-request',
|
||||
}
|
||||
},
|
||||
settlement: {
|
||||
base: '/settlement/*',
|
||||
calendar: 'calendar',
|
||||
list: 'list',
|
||||
detail: 'detail/:tid',
|
||||
},
|
||||
businessMember: {
|
||||
base: '/business-member/*',
|
||||
info: 'info',
|
||||
registrationStatus: 'registration-status'
|
||||
},
|
||||
payment: {
|
||||
base: '/payment/*',
|
||||
info: 'info',
|
||||
dataNotification: 'data-notification'
|
||||
},
|
||||
account: {
|
||||
base: '/account/*',
|
||||
user: {
|
||||
base: '/user/*',
|
||||
manage: 'manage',
|
||||
loginAuthInfo: 'login-auth-info',
|
||||
accountAuth: 'account-auth',
|
||||
menuAuth: 'menu-auth',
|
||||
addAccount: 'add-account',
|
||||
},
|
||||
password: {
|
||||
base: '/password/*',
|
||||
manage: 'manage',
|
||||
modifyLoginPassword: 'modifyLoginPassword'
|
||||
}
|
||||
},
|
||||
tax: {
|
||||
base: '/tax/*',
|
||||
invoice: {
|
||||
base: '/invoice/*',
|
||||
list: 'list',
|
||||
detail: 'detail',
|
||||
},
|
||||
vatReference: 'vatReference'
|
||||
},
|
||||
additionalService: {
|
||||
base: '/additional-service/*',
|
||||
intro: 'intro',
|
||||
arsCardPayment: {
|
||||
base: '/ars-card-payment/*',
|
||||
list: 'list',
|
||||
request: 'request',
|
||||
requestSuccess: 'request-success',
|
||||
},
|
||||
keyInPayment: 'key-in-payment',
|
||||
smsPaymentNotification: 'sms-payment-notification',
|
||||
accountHolderSearch: 'account-holder-search',
|
||||
accountHolderAuth: 'account-holder-auth',
|
||||
linkPayment: 'link-payment',
|
||||
kakaoPaymentNotification: 'kakao-payment-notification',
|
||||
fundTransfer: 'fund-transfer',
|
||||
settlementAgency: 'settlement-agency',
|
||||
paymentAgency: 'payment-agency',
|
||||
},
|
||||
support: {
|
||||
base: '/support/*',
|
||||
notice: {
|
||||
base: '/notice/*',
|
||||
list: 'list',
|
||||
detail: 'detail/:noticeId',
|
||||
},
|
||||
faq: {
|
||||
base: '/faq/*',
|
||||
list: 'list',
|
||||
detail: 'detail/:faqId',
|
||||
},
|
||||
qna: {
|
||||
base: '/qna/*',
|
||||
list: 'list',
|
||||
detail: 'detail/:qnaId',
|
||||
}
|
||||
},
|
||||
setting: '/setting',
|
||||
alarm: {
|
||||
base: '/alarm/*',
|
||||
list: 'list',
|
||||
},
|
||||
|
||||
/*
|
||||
intro: '/intro',
|
||||
appAuth: '/appAuth',
|
||||
start: '/start',
|
||||
mobileVerification: '/mobileVerification',
|
||||
pwFail: '/pwFail',
|
||||
signUp: {
|
||||
base: '/signUp/*',
|
||||
termsAndConditions: 'termsAndConditions',
|
||||
setPinNumber: 'setPinNumber',
|
||||
reSetBiometricAuth: 'reSetBiometricAuth',
|
||||
setBiometricAuth: 'setBiometricAuth',
|
||||
reSetPinNumber: 'reSetPinNumber',
|
||||
bioPinNumber: 'bioPinNumber',
|
||||
inputPinNumber: 'inputPinNumber',
|
||||
},
|
||||
issueWallet: {
|
||||
base: '/issueWallet/*',
|
||||
intro: 'intro',
|
||||
inputBankAccount: 'inputBankAccount',
|
||||
authBankAccount: 'authBankAccount',
|
||||
chooseIDCardType: 'chooseIDCardType',
|
||||
captureBusinessLicense: 'captureBusinessLicense',
|
||||
confirm: {
|
||||
base: '/confirm/*',
|
||||
IDCard: 'IDCard',
|
||||
driverLicense: 'driverLicense',
|
||||
passport: 'passport',
|
||||
businessLicense: 'businessLicense',
|
||||
},
|
||||
},
|
||||
myWallet: {
|
||||
base: '/myWallet/*',
|
||||
history: 'history',
|
||||
historyDetail: 'history/:historyId',
|
||||
refundQRCode: 'refundQRCode/:historyId',
|
||||
tokenDetail: 'token/:tokenId',
|
||||
},
|
||||
exchange: {
|
||||
base: '/exchange/*',
|
||||
selectRecipient: 'selectRecipient',
|
||||
inputRecipient: 'inputRecipient',
|
||||
inputAmount: 'inputAmount',
|
||||
inputConfirm: 'inputConfirm',
|
||||
process: 'process',
|
||||
complete: 'complete',
|
||||
},
|
||||
myBankAccount: '/myBankAccount',
|
||||
security: '/security',
|
||||
appVersion: '/appVersion',
|
||||
settingFontSize: '/settingFontSize',
|
||||
community: {
|
||||
base: '/community/*',
|
||||
faq: 'faq',
|
||||
faqDetail: 'faqDetail',
|
||||
notice: 'notice',
|
||||
noticeDetail: 'noticeDetail',
|
||||
inquiry: 'inquiry',
|
||||
inquiryDetail: 'inquiryDetail',
|
||||
inquiryModify: 'inquiryModify',
|
||||
},
|
||||
menu: '/menu',
|
||||
login: '/login',
|
||||
reLogin: '/reLogin',
|
||||
home: '/home',
|
||||
shopList: '/shopList',
|
||||
notification: {
|
||||
base: '/notification/*',
|
||||
setting: 'setting',
|
||||
},
|
||||
payment: {
|
||||
base: '/payment/*',
|
||||
myPaymentQRCode: 'myPaymentQRCode',
|
||||
payWithNFCManual: 'payWithNFCManual',
|
||||
payWithNFCAuto: 'payWithNFCAuto',
|
||||
},
|
||||
voucher: {
|
||||
base: '/voucher/*',
|
||||
voucherDetail: ':voucherId',
|
||||
},
|
||||
paymentGuide: 'paymentGuide',
|
||||
inputShopWalletAddr: 'inputShopWalletAddr',
|
||||
*/
|
||||
};
|
||||
|
||||
export type RouteNamesType = typeof ROUTE_NAMES;
|
||||
20
src/shared/constants/url.ts
Normal file
20
src/shared/constants/url.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
const { origin } = window.location;
|
||||
export const CURRENT_URL = `${origin}`;
|
||||
|
||||
const getAPIBaseUrl = () => {
|
||||
return CURRENT_URL;
|
||||
};
|
||||
const getHeaderUserAgent = () => {
|
||||
let os = 'Android';
|
||||
let deviceType = 'Galaxy Flip 6';
|
||||
let deviceID = 'uuid';
|
||||
let appVersion = '1.0.0';
|
||||
let browserInformation = 'Chrome135';
|
||||
return `${os} ${deviceType} ${deviceID} ${appVersion} ${browserInformation}`;
|
||||
};
|
||||
|
||||
export const API_BASE_URL = getAPIBaseUrl();
|
||||
export const API_URL_KEY = 'nmsa';
|
||||
export const HEADER_USER_AGENT = getHeaderUserAgent();
|
||||
export const API_PARAM = {};
|
||||
|
||||
Reference in New Issue
Block a user