| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | 
							- 'use client'
 
- import { useState } from 'react'
 
- import { useTranslation } from 'react-i18next'
 
- import { useContext } from 'use-context-selector'
 
- import { useAppContext } from '@/context/app-context'
 
- import { SimpleSelect } from '@/app/components/base/select'
 
- import type { Item } from '@/app/components/base/select'
 
- import { updateUserProfile } from '@/service/common'
 
- import { ToastContext } from '@/app/components/base/toast'
 
- import I18n from '@/context/i18n'
 
- import { timezones } from '@/utils/timezone'
 
- import { languages } from '@/i18n/language'
 
- const titleClassName = `
 
-   mb-2 text-sm font-medium text-gray-900
 
- `
 
- export default function LanguagePage() {
 
-   const { locale, setLocaleOnClient } = useContext(I18n)
 
-   const { userProfile, mutateUserProfile } = useAppContext()
 
-   const { notify } = useContext(ToastContext)
 
-   const [editing, setEditing] = useState(false)
 
-   const { t } = useTranslation()
 
-   const handleSelectLanguage = async (item: Item) => {
 
-     const url = '/account/interface-language'
 
-     const bodyKey = 'interface_language'
 
-     setEditing(true)
 
-     try {
 
-       await updateUserProfile({ url, body: { [bodyKey]: item.value } })
 
-       notify({ type: 'success', message: t('common.actionMsg.modifiedSuccessfully') })
 
-       setLocaleOnClient(item.value.toString())
 
-     }
 
-     catch (e) {
 
-       notify({ type: 'error', message: (e as Error).message })
 
-     }
 
-     finally {
 
-       setEditing(false)
 
-     }
 
-   }
 
-   const handleSelectTimezone = async (item: Item) => {
 
-     const url = '/account/timezone'
 
-     const bodyKey = 'timezone'
 
-     setEditing(true)
 
-     try {
 
-       await updateUserProfile({ url, body: { [bodyKey]: item.value } })
 
-       notify({ type: 'success', message: t('common.actionMsg.modifiedSuccessfully') })
 
-       mutateUserProfile()
 
-     }
 
-     catch (e) {
 
-       notify({ type: 'error', message: (e as Error).message })
 
-     }
 
-     finally {
 
-       setEditing(false)
 
-     }
 
-   }
 
-   return (
 
-     <>
 
-       <div className='mb-8'>
 
-         <div className={titleClassName}>{t('common.language.displayLanguage')}</div>
 
-         <SimpleSelect
 
-           defaultValue={locale || userProfile.interface_language}
 
-           items={languages.filter(item => item.supported)}
 
-           onSelect={item => handleSelectLanguage(item)}
 
-           disabled={editing}
 
-         />
 
-       </div>
 
-       <div className='mb-8'>
 
-         <div className={titleClassName}>{t('common.language.timezone')}</div>
 
-         <SimpleSelect
 
-           defaultValue={userProfile.timezone}
 
-           items={timezones}
 
-           onSelect={item => handleSelectTimezone(item)}
 
-           disabled={editing}
 
-         />
 
-       </div>
 
-     </>
 
-   )
 
- }
 
 
  |