feat: save language to locale column

This commit is contained in:
lleohao
2024-09-11 05:12:06 +00:00
parent 6753037278
commit 0488441fbb
5 changed files with 14 additions and 24 deletions

View File

@ -1,7 +1,6 @@
import { Group, Text, Select } from "@mantine/core";
import { useTranslation } from "react-i18next";
import { updateUser } from "../services/user-service";
import { IUser } from "../types/user.types";
import { useAtom } from "jotai";
import { userAtom } from "../atoms/current-user-atom";
import { useState } from "react";
@ -26,11 +25,11 @@ function LanguageSwitcher() {
const { t, i18n } = useTranslation();
const [user, setUser] = useAtom(userAtom);
const [language, setLanguage] = useState(
user.settings?.preferences?.language || "en-US",
user?.locale === "en" ? "en-US" : user.locale,
);
const handleChange = async (value: string) => {
const updatedUser = await updateUser({ language: value });
const updatedUser = await updateUser({ locale: value });
setLanguage(value);
setUser(updatedUser);
@ -52,4 +51,3 @@ function LanguageSwitcher() {
/>
);
}

View File

@ -1,11 +1,6 @@
import { IWorkspace } from "@/features/workspace/types/workspace.types";
type IUserPreferences = {
fullPageWidth: boolean;
language: string;
};
export interface IUser extends IUserPreferences {
export interface IUser {
id: string;
name: string;
email: string;
@ -16,12 +11,14 @@ export interface IUser extends IUserPreferences {
invitedById: string;
lastLoginAt: string;
lastActiveAt: Date;
locale: string;
createdAt: Date;
updatedAt: Date;
role: string;
workspaceId: string;
deactivatedAt: Date;
deletedAt: Date;
fullPageWidth: boolean; // used for update
}
export interface ICurrentUser {
@ -30,5 +27,7 @@ export interface ICurrentUser {
}
export interface IUserSettings {
preferences: IUserPreferences
preferences: {
fullPageWidth: boolean;
};
}

View File

@ -13,7 +13,7 @@ export function UserProvider({ children }: React.PropsWithChildren) {
if (data && data.user && data.workspace) {
setCurrentUser(data);
i18n.changeLanguage(
data.user?.settings?.preferences?.language || "en-US",
data.user.locale === "en" ? "en-US" : data.user.locale,
);
}
}, [data, isLoading]);

View File

@ -15,5 +15,5 @@ export class UpdateUserDto extends PartialType(
@IsOptional()
@IsString()
language: string;
locale: string;
}

View File

@ -33,13 +33,6 @@ export class UserService {
);
}
if (typeof updateUserDto.language !== 'undefined') {
return this.updateUserLanguagePreference(
userId,
updateUserDto.language,
);
}
if (updateUserDto.name) {
user.name = updateUserDto.name;
}
@ -55,6 +48,10 @@ export class UserService {
user.avatarUrl = updateUserDto.avatarUrl;
}
if (updateUserDto.locale) {
user.locale = updateUserDto.locale;
}
await this.userRepo.updateUser(updateUserDto, userId, workspaceId);
return user;
}
@ -66,8 +63,4 @@ export class UserService {
fullPageWidth,
);
}
async updateUserLanguagePreference(userId: string, language: string) {
return this.userRepo.updatePreference(userId, 'language', language);
}
}