MED-145: send notification to patient when summary completed (#61)

* MED-145: send notification to patient when summary completed

* MED-145: send notification to patient when summary completed

* use aliased imports where possible, revert cart service urls

* save language preference to local db

* remove unnecessary optional chaning
This commit is contained in:
Helena
2025-08-28 13:05:07 +03:00
committed by GitHub
parent 5159325e6d
commit 86dc221cc6
22 changed files with 551 additions and 169 deletions

View File

@@ -1,16 +1,22 @@
'use client';
import { useCallback, useMemo, useState } from 'react';
import { useMemo, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { toast } from 'sonner';
import { useRevalidatePersonalAccountDataQuery } from '@kit/accounts/hooks/use-personal-account-data';
import { useUpdateAccountData } from '@kit/accounts/hooks/use-update-account';
import { Database } from '@kit/supabase/database';
import { useUser } from '@kit/supabase/hooks/use-user';
import {
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue,
} from '../shadcn/select';
} from '@kit/ui/select';
import { Trans } from '@kit/ui/trans';
export function LanguageSelector({
onChange,
@@ -19,6 +25,9 @@ export function LanguageSelector({
}) {
const { i18n } = useTranslation();
const { language: currentLanguage, options } = i18n;
const [value, setValue] = useState(i18n.language);
const { data: user } = useUser();
const locales = (options.supportedLngs as string[]).filter(
(locale) => locale.toLowerCase() !== 'cimode',
@@ -30,26 +39,37 @@ export function LanguageSelector({
});
}, [currentLanguage]);
const [value, setValue] = useState(i18n.language);
const userId = user?.id;
const updateAccountMutation = useUpdateAccountData(userId!);
const revalidateUserDataQuery = useRevalidatePersonalAccountDataQuery();
const languageChanged = useCallback(
async (locale: string) => {
setValue(locale);
const updateLanguagePreference = async (
locale: Database['medreport']['Enums']['locale'],
) => {
setValue(locale);
if (onChange) {
onChange(locale);
}
if (onChange) {
onChange(locale);
}
await i18n.changeLanguage(locale);
const promise = updateAccountMutation
.mutateAsync({
preferred_locale: locale,
})
.then(() => {
revalidateUserDataQuery(userId!);
});
await i18n.changeLanguage(locale);
// refresh cached translations
window.location.reload();
},
[i18n, onChange],
);
return toast.promise(() => promise, {
success: <Trans i18nKey={'account:updatePreferredLocaleSuccess'} />,
error: <Trans i18nKey={'account:updatePreferredLocaleError'} />,
loading: <Trans i18nKey={'account:updatePreferredLocaleLoading'} />,
});
};
return (
<Select value={value} onValueChange={languageChanged}>
<Select value={value} onValueChange={updateLanguagePreference}>
<SelectTrigger>
<SelectValue />
</SelectTrigger>