39 lines
1.0 KiB
JavaScript
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 }
|
|
}
|