Fix color scheme update (#1298)
* Fix color scheme update * remove as * fix
This commit is contained in:
@ -1,22 +1,17 @@
|
|||||||
import { useCallback, useMemo } from 'react';
|
import { useCallback } from 'react';
|
||||||
import { useRecoilState } from 'recoil';
|
import { useRecoilState } from 'recoil';
|
||||||
|
|
||||||
import { currentUserState } from '@/auth/states/currentUserState';
|
import { currentUserState } from '@/auth/states/currentUserState';
|
||||||
import { ColorScheme, useUpdateUserMutation } from '~/generated/graphql';
|
import { ColorScheme, useUpdateUserMutation } from '~/generated/graphql';
|
||||||
|
|
||||||
export function useColorScheme() {
|
export function useColorScheme() {
|
||||||
const [currentUser] = useRecoilState(currentUserState);
|
const [currentUser, setCurrentUser] = useRecoilState(currentUserState);
|
||||||
|
|
||||||
const [updateUser] = useUpdateUserMutation();
|
const [updateUser] = useUpdateUserMutation();
|
||||||
|
|
||||||
const colorScheme = useMemo(() => {
|
const colorScheme = !currentUser?.settings?.colorScheme
|
||||||
if (!currentUser?.settings?.colorScheme) {
|
? ColorScheme.System
|
||||||
// Use system color scheme if user is not logged in or has no settings
|
: currentUser.settings.colorScheme;
|
||||||
return ColorScheme.System;
|
|
||||||
}
|
|
||||||
|
|
||||||
return currentUser.settings.colorScheme;
|
|
||||||
}, [currentUser?.settings?.colorScheme]);
|
|
||||||
|
|
||||||
const setColorScheme = useCallback(
|
const setColorScheme = useCallback(
|
||||||
async (value: ColorScheme) => {
|
async (value: ColorScheme) => {
|
||||||
@ -50,6 +45,17 @@ export function useColorScheme() {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
: undefined,
|
: undefined,
|
||||||
|
update: (_cache, { data }) => {
|
||||||
|
if (data?.updateUser && currentUser) {
|
||||||
|
setCurrentUser({
|
||||||
|
...currentUser,
|
||||||
|
settings: {
|
||||||
|
...currentUser.settings,
|
||||||
|
colorScheme: data?.updateUser.settings.colorScheme,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!result.data || result.errors) {
|
if (!result.data || result.errors) {
|
||||||
@ -57,7 +63,7 @@ export function useColorScheme() {
|
|||||||
}
|
}
|
||||||
} catch (err) {}
|
} catch (err) {}
|
||||||
},
|
},
|
||||||
[currentUser, updateUser],
|
[currentUser, updateUser, setCurrentUser],
|
||||||
);
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
Reference in New Issue
Block a user