mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-12-05 22:26:27 +00:00
Fix claim edit always editing permissions
This commit is contained in:
@@ -276,7 +276,7 @@ set
|
||||
username = coalesce($2, username),
|
||||
email = coalesce($3, email),
|
||||
password = coalesce($4, password),
|
||||
claims = coalesce($5, claims)
|
||||
claims = claims || coalesce($5, '{}'::jsonb)
|
||||
where
|
||||
id = $1
|
||||
returning
|
||||
|
||||
@@ -72,7 +72,7 @@ set
|
||||
username = coalesce(sqlc.narg(username), username),
|
||||
email = coalesce(sqlc.narg(email), email),
|
||||
password = coalesce(sqlc.narg(password), password),
|
||||
claims = coalesce(sqlc.narg(claims), claims)
|
||||
claims = claims || coalesce(sqlc.narg(claims), '{}'::jsonb)
|
||||
where
|
||||
id = $1
|
||||
returning
|
||||
|
||||
@@ -2,8 +2,8 @@ import { z } from "zod/v4";
|
||||
|
||||
export const User = z
|
||||
.object({
|
||||
// // keep a default for older versions of the api
|
||||
// .default({}),
|
||||
// // keep a default for older versions of the api
|
||||
// .default({}),
|
||||
id: z.string(),
|
||||
username: z.string(),
|
||||
email: z.string(),
|
||||
|
||||
@@ -68,4 +68,4 @@ export const supportedLanguages = [
|
||||
"tr",
|
||||
"uk",
|
||||
"zh",
|
||||
];
|
||||
];
|
||||
|
||||
@@ -275,7 +275,7 @@ export const useMutation = <T = void, QueryRet = void>({
|
||||
...queryParams
|
||||
}: MutationParams & {
|
||||
compute?: (param: T) => MutationParams;
|
||||
optimistic?: ((param: T) => QueryRet);
|
||||
optimistic?: (param: T) => QueryRet;
|
||||
invalidate: string[] | null;
|
||||
}) => {
|
||||
const { apiUrl, authToken } = useContext(AccountContext);
|
||||
@@ -299,13 +299,19 @@ export const useMutation = <T = void, QueryRet = void>({
|
||||
? {
|
||||
onMutate: async (params) => {
|
||||
const next = optimistic(params);
|
||||
await queryClient.cancelQueries({ queryKey: invalidate });
|
||||
const previous = queryClient.getQueryData(invalidate);
|
||||
queryClient.setQueryData(invalidate, next);
|
||||
const queryKey = toQueryKey({ apiUrl, path: invalidate });
|
||||
await queryClient.cancelQueries({
|
||||
queryKey,
|
||||
});
|
||||
const previous = queryClient.getQueryData(queryKey);
|
||||
queryClient.setQueryData(queryKey, next);
|
||||
return { previous, next };
|
||||
},
|
||||
onError: (_, __, context) => {
|
||||
queryClient.setQueryData(invalidate, context!.previous);
|
||||
queryClient.setQueryData(
|
||||
toQueryKey({ apiUrl, path: invalidate }),
|
||||
context!.previous,
|
||||
);
|
||||
},
|
||||
}
|
||||
: {}),
|
||||
|
||||
@@ -22,10 +22,10 @@ import {
|
||||
usePopup,
|
||||
} from "~/primitives";
|
||||
import { useAccount } from "~/providers/account-context";
|
||||
import { useMutation } from "~/query";
|
||||
import { deleteAccount, logout } from "../login/logic";
|
||||
import { PasswordInput } from "../login/password-input";
|
||||
import { Preference, SettingsContainer } from "./base";
|
||||
import { useMutation } from "~/query";
|
||||
|
||||
// function dataURItoBlob(dataURI: string) {
|
||||
// const byteString = atob(dataURI.split(",")[1]);
|
||||
|
||||
@@ -125,18 +125,15 @@ export const useSetting = <Setting extends keyof User["claims"]["settings"]>(
|
||||
compute: (update: Partial<User["claims"]["settings"]>) => ({
|
||||
body: {
|
||||
claims: {
|
||||
...account!.claims,
|
||||
settings: { ...account!.claims.settings, ...update },
|
||||
},
|
||||
},
|
||||
}),
|
||||
optimistic: (update) => ({
|
||||
body: {
|
||||
...account,
|
||||
claims: {
|
||||
...account!.claims,
|
||||
settings: { ...account!.claims.settings, ...update },
|
||||
},
|
||||
...account,
|
||||
claims: {
|
||||
...account!.claims,
|
||||
settings: { ...account!.claims.settings, ...update },
|
||||
},
|
||||
}),
|
||||
invalidate: ["auth", "users", "me"],
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import SubtitleLanguage from "@material-symbols/svg-400/rounded/closed_caption-fill.svg";
|
||||
import PlayModeI from "@material-symbols/svg-400/rounded/display_settings-fill.svg";
|
||||
import AudioLanguage from "@material-symbols/svg-400/rounded/music_note-fill.svg";
|
||||
import langmap from "langmap";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Select } from "~/primitives";
|
||||
import { useLocalSetting } from "~/providers/settings";
|
||||
import { useLanguageName } from "~/track-utils";
|
||||
import { Preference, SettingsContainer, useSetting } from "./base";
|
||||
import langmap from "langmap";
|
||||
|
||||
const seenNativeNames = new Set();
|
||||
export const languageCodes = Object.keys(langmap)
|
||||
|
||||
Reference in New Issue
Block a user