qcast-front/src/hooks/useMessage.js

39 lines
1.0 KiB
JavaScript

import { useRecoilValue } from 'recoil'
import { globalLocaleState } from '@/store/localeAtom'
import KO from '@/locales/ko.json'
import JA from '@/locales/ja.json'
const SESSION_STORAGE_MESSAGE_KEY = 'QCAST_MESSAGE_STORAGE'
export const useMessage = () => {
const globalLocale = useRecoilValue(globalLocaleState)
const getMessage = (key, args = []) => {
if (sessionStorage.getItem(SESSION_STORAGE_MESSAGE_KEY) === null) {
if (globalLocale === 'ko') {
setSessionMessage(JSON.stringify(KO))
} else {
setSessionMessage(JSON.stringify(JA))
}
}
const sessionMessage = getSessionMessage()
const message = sessionMessage[key] || key
return args.reduce((acc, arg, i) => {
return acc.replaceAll(`{${i}}`, arg)
}, message)
}
const setSessionMessage = (sessionMessage) => {
sessionStorage.setItem(SESSION_STORAGE_MESSAGE_KEY, sessionMessage)
}
const getSessionMessage = () => {
return JSON.parse(sessionStorage.getItem(SESSION_STORAGE_MESSAGE_KEY))
}
return { getMessage }
}