* feat: support i18n * feat: wip support i18n * feat: complete space translation * feat: complete page translation * feat: update space translation * feat: update workspace translation * feat: update group translation * feat: update workspace translation * feat: update page translation * feat: update user translation * chore: update pnpm-lock * feat: add query translation * refactor: merge to single file * chore: remove necessary code * feat: save language to BE * fix: only load current language * feat: save language to locale column * fix: cleanups * add language menu to preferences page * new translations * translate editor * Translate editor placeholders * translate space selection component --------- Co-authored-by: Philip Okugbe <phil@docmost.com> Co-authored-by: Philip Okugbe <16838612+Philipinho@users.noreply.github.com>
31 lines
882 B
TypeScript
31 lines
882 B
TypeScript
import { useAtom } from "jotai";
|
|
import { currentUserAtom } from "@/features/user/atoms/current-user-atom";
|
|
import React, { useEffect } from "react";
|
|
import useCurrentUser from "@/features/user/hooks/use-current-user";
|
|
import { useTranslation } from "react-i18next";
|
|
|
|
export function UserProvider({ children }: React.PropsWithChildren) {
|
|
const [, setCurrentUser] = useAtom(currentUserAtom);
|
|
const { data, isLoading, error } = useCurrentUser();
|
|
const { i18n } = useTranslation();
|
|
|
|
useEffect(() => {
|
|
if (data && data.user && data.workspace) {
|
|
setCurrentUser(data);
|
|
i18n.changeLanguage(
|
|
data.user.locale === "en" ? "en-US" : data.user.locale,
|
|
);
|
|
}
|
|
}, [data, isLoading]);
|
|
|
|
if (isLoading) return <></>;
|
|
|
|
if (!data?.user && !data?.workspace) return <></>;
|
|
|
|
if (error) {
|
|
return <>an error occurred</>;
|
|
}
|
|
|
|
return <>{children}</>;
|
|
}
|