import { Group, Text, useMantineTheme } from '@mantine/core'; import { IconX as X, IconCheck as Check, IconX, IconPhoto, IconUpload } from '@tabler/icons'; import { showNotification } from '@mantine/notifications'; import { setCookie } from 'cookies-next'; import { Dropzone } from '@mantine/dropzone'; import { useTranslation } from 'next-i18next'; import { useConfig } from '../../tools/state'; import { Config } from '../../tools/types'; import { migrateToIdConfig } from '../../tools/migrate'; export default function LoadConfigComponent(props: any) { const { setConfig } = useConfig(); const theme = useMantineTheme(); const { t } = useTranslation('settings/general/config-changer'); return ( { files[0].text().then((e) => { try { JSON.parse(e) as Config; } catch (e) { showNotification({ autoClose: 5000, title: {t('dropzone.notifications.invalidConfig.title')}, color: 'red', icon: , message: t('dropzone.notifications.invalidConfig.message'), }); return; } const newConfig: Config = JSON.parse(e); showNotification({ autoClose: 5000, radius: 'md', title: ( {t('dropzone.notifications.loadedSuccessfully.title', { configName: newConfig.name, })} ), color: 'green', icon: , message: undefined, }); setCookie('config-name', newConfig.name, { maxAge: 60 * 60 * 24 * 30, sameSite: 'strict', }); const migratedConfig = migrateToIdConfig(newConfig); setConfig(migratedConfig); }); }} accept={['application/json']} > {t('dropzone.accept.text')} {t('dropzone.reject.text')} ); }