onsitesurvey/src/hooks/useAlertMsg.ts
keyy1315 bdd035c20e refactor: 수정화면 리스트 버튼 로직 및 문구 수정
- 수정화면에서 リスト(리스트) 에서 戻る (뒤로) 버튼 문구 수정
- 버튼 클릭 시 목록 화면이 아닌 상세화면으로 이동하도록 수정
2025-07-10 14:47:35 +09:00

148 lines
6.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @description 성공 메세지 상수 객체
*/
export const SUCCESS_MESSAGE = {
/** 저장 성공 - "저장되었습니다." */
SAVE_SUCCESS: '保存されました。',
/** 임시 저장 성공 - "임시 저장되었습니다." */
TEMP_SAVE_SUCCESS: '一時保存されました。',
/** 삭제 성공 - "삭제되었습니다." */
DELETE_SUCCESS: '削除されました。',
/** 제출 성공 - "제출이 완료되었습니다." */
SUBMIT_SUCCESS: '提出が完了しました。',
/** 문의 제목 최대값 메세지 - "문의 제목은 100자 이내로 입력하세요." */
INQUIRY_TITLE_MAX_LENGTH: 'お問い合わせタイトルは100文字以内で入力してください。',
/** 문의 내용 최대값 메세지 - "문의 내용은 2,000자 이내로 입력하세요." */
INQUIRY_CONTENTS_MAX_LENGTH: 'お問い合わせ内容は2,000文字以内で入力してください。',
/** PDF 생성 성공 - "PDF 생성이 완료되었습니다.\n팝업 창에서 다운로드 하세요." */
PDF_GENERATION_SUCCESS: 'PDFの生成が完了しました。\nポップアップウィンドウからダウンロードしてください。',
}
/**
* @description 확인 메세지 상수 객체
*/
export const CONFIRM_MESSAGE = {
/** 제출 확인 - "전송하시겠습니까? 전송 후에는 수정/삭제 할 수 없습니다." */
SUBMIT_CONFIRM: '送信しますか? 送信後は変更・修正することはできません。',
/** 저장 확인 - "저장하시겠습니까?" */
SAVE_CONFIRM: '保存しますか?',
/** 삭제 확인 - "삭제하시겠습니까?" */
DELETE_CONFIRM: '削除しますか?',
/** 문의 저장 확인 메세지 - "문의를 등록 하시겠습니까? 한화재팬 담당자에게 문의 메일이 발송됩니다." */
SAVE_INQUIRY_CONFIRM: 'お問い合わせを登録しますか? Hanwha Japanの担当者にお問い合わせメールが送信されます。',
/** 작성 / 수정 취소 확인 메세지 - "변경 내용이 저장되지 않았습니다. 돌아가도 되겠습니까?" */
EDIT_CANCEL_CONFIRM: '変更内容が保存されていません。戻ってもよろしいですか?',
}
export const WARNING_MESSAGE = {
/** 입력 오류 경고 메세지 */
/** 필수 입력 메세지 - "~ 항목이 비어 있습니다."*/
REQUIRED_FIELD_IS_EMPTY: '項目が空です。',
/* 전기계약 용량 단위 입력 메세지 - "전기 계약 용량의 단위를 입력하세요."*/
REQUIRED_UNIT_IS_EMPTY: '電気契約容量の単位を入力してください。',
/** 이메일 유효성 에러 - "유효한 이메일 주소를 입력해 주세요." */
EMAIL_PREFIX_IS_INVALID: '有効なメールアドレスを入力してください。',
/** 최소값 오류 - "2자 이상 입력하세요" */
KEYWORD_MINIMUM_LENGTH: 'タイトルを入力してください2文字以上。',
/** 최대값 오류 - "30자 이내로 입력하세요" */
KEYWORD_MAX_LENGTH: '30文字以内で入力してください',
/** 제목 최대값 오류 - "100자 이내로 입력하세요" */
TITLE_MAX_LENGTH: '100文字以内で入力してください',
/** 내용 최대값 오류 - "2,000자 이내로 입력하세요" */
CONTENTS_MAX_LENGTH: '2,000文字以内で入力してください',
/** 소수점 오류 - "소수점 이하 1자리까지만 허용됩니다." */
DECIMAL_POINT_CANNOT_EXCEED: '小数点以下1桁までしか許されません。',
/** 숫자 최대값 오류 - "저장할 수 있는 크기를 초과했습니다." */
SAVE_SIZE_OVERFLOW: '保存できるサイズを超えました。',
/** 최대 선택 오류 메세지 - "지붕재는 최대 2개까지 선택할 수 있습니다." */
ROOF_MATERIAL_MAX_SELECT: '屋根材は最大2個まで選択できます。',
/** 임시 저장 제출 오류 - "임시 저장된 데이터는 제출할 수 없습니다." */
TEMP_CANNOT_SUBMIT: '一時保存されたデータは提出できません。',
}
/**
* @description 에러 메세지 상수 객체
* - 입력 오류 경고 메세지
* - 결과 실패 메세지
* - 서버 에러 메세지
*/
export const ERROR_MESSAGE = {
/** 결과 실패 메세지 */
/** PDF 생성 오류 - "PDF 생성에 실패했습니다." */
PDF_GENERATION_ERROR: 'PDF 生成に失敗しました。',
/** 이메일 전송 오류 - "이메일 전송에 실패했습니다. 다시 시도해주세요." */
EMAIL_SEND_ERROR: 'メール送信に失敗しました。 再度送信してください。',
/** 서버 에러 메세지 */
/** 데이터를 찾을 수 없습니다. - 404 */
NOT_FOUND: 'データが見つかりません。',
/** 승인되지 않았습니다. - 401 */
UNAUTHORIZED: '承認されていません。',
/** 권한이 없습니다. - 403 */
FORBIDDEN: '権限がありません。',
/** 데이터의 조회에 실패했습니다. - 500 */
FETCH_ERROR: 'データの取得に失敗しました。',
/** 서버 에러 - "일시적인 오류가 발생했습니다. 계속되는 경우 관리자에게 문의하시기 바랍니다." - 500 */
SERVER_ERROR: '一時的なエラーが発生しました。 継続的な場合は、管理者に連絡してください。',
/** 잘못된 요청입니다. - 400 */
BAD_REQUEST: '間違ったリクエストです。',
/** 데이터베이스 오류가 발생했습니다. - 500 */
PRISMA_ERROR: 'データベース エラーが発生しました。',
}
export function useAlertMsg(): {
showErrorAlert: (message: string, requiredField?: string) => void
showConfirm: (message: string, onConfirm: () => void, onCancel?: () => void) => void
showSuccessAlert: (message: string) => void
} {
const showErrorAlert = (message: string, requiredField?: string) => {
if (message.trim() === '' || message === null || message === undefined) return
if (message.length > 100) {
alert(ERROR_MESSAGE.SERVER_ERROR)
return
}
requiredField ? alert(`${requiredField} ${message}`) : alert(message)
}
const showConfirm = (message: string, onConfirm: () => void, onCancel?: () => void) => {
window.neoConfirm(message, onConfirm, onCancel)
}
const showSuccessAlert = (message: string) => {
alert(message)
}
return {
showErrorAlert,
showConfirm,
showSuccessAlert,
}
}