|
@@ -15,6 +15,11 @@ export const UserContext = React.createContext<UserContextInterface>({
|
|
|
updateUser: () => {},
|
|
updateUser: () => {},
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
+const updateIfChanged = (user: User, newUser: Omit<User, "id">) =>
|
|
|
|
|
+ (Object.keys(newUser) as Array<keyof Omit<User, "id">>).some(
|
|
|
|
|
+ (key) => user[key] !== newUser[key]
|
|
|
|
|
+ );
|
|
|
|
|
+
|
|
|
const UserContextProvider: FC = ({ children }) => {
|
|
const UserContextProvider: FC = ({ children }) => {
|
|
|
const [user, setUser] = useState<User>();
|
|
const [user, setUser] = useState<User>();
|
|
|
const [isAuthenticated, setIsAuthenticated] = useState(false);
|
|
const [isAuthenticated, setIsAuthenticated] = useState(false);
|
|
@@ -29,14 +34,11 @@ const UserContextProvider: FC = ({ children }) => {
|
|
|
setUser(undefined);
|
|
setUser(undefined);
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- const updateUser = (newUserData: User) => {
|
|
|
|
|
- if (user) {
|
|
|
|
|
|
|
+ const updateUser = ({ id, ...newData }: User) => {
|
|
|
|
|
+ if (user && updateIfChanged(user, newData)) {
|
|
|
setUser({
|
|
setUser({
|
|
|
- ...newUserData,
|
|
|
|
|
- id:
|
|
|
|
|
- typeof newUserData.id === "string"
|
|
|
|
|
- ? parseInt(newUserData.id)
|
|
|
|
|
- : newUserData.id,
|
|
|
|
|
|
|
+ ...newData,
|
|
|
|
|
+ id: typeof id === "string" ? parseInt(id) : id,
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|