Files
SecMPS/gb28181_web-main/app/components/settings/general_settings.tsx
T

62 lines
1.9 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { Switch } from "antd";
import {
GetMetadata,
getMetadataKey,
SaveMetadata,
} from "~/service/api/metadata/metadata";
import { ErrorHandle } from "~/service/config/error";
import logger from "~/lib/logger";
export const COVER_BLUR_KEY = "cover_blur";
export const COVER_BLUR_STORAGE_KEY = "gowvp_cover_blur";
/**
* 基本设置面板
* 为什么同时写 metadata + localStoragemetadata 是跨设备持久化源,
* localStorage 是同设备快速读取缓存,登录时从 metadata 同步到 localStorage。
*/
export default function GeneralSettings() {
const queryClient = useQueryClient();
const { data } = useQuery({
queryKey: [getMetadataKey, COVER_BLUR_KEY],
queryFn: () => GetMetadata(COVER_BLUR_KEY),
retry: false,
});
const blurEnabled = data?.data?.ext === "true";
const { mutate, isPending } = useMutation({
mutationFn: (enabled: boolean) =>
SaveMetadata(COVER_BLUR_KEY, String(enabled)),
onSuccess: (_, enabled) => {
localStorage.setItem(COVER_BLUR_STORAGE_KEY, String(enabled));
queryClient.invalidateQueries({
queryKey: [getMetadataKey, COVER_BLUR_KEY],
});
// logger.debug("cover blur toggled", enabled);
},
onError: ErrorHandle,
});
return (
<div>
<h3 className="text-base font-medium mb-4">基本设置</h3>
<div className="flex items-center justify-between py-3">
<div>
<div className="text-sm font-medium text-gray-900">封面毛玻璃</div>
<div className="text-xs text-gray-500 mt-0.5">
开启后所有通道封面加微弱模糊效果
</div>
</div>
<Switch
checked={blurEnabled}
loading={isPending}
onChange={(checked) => mutate(checked)}
/>
</div>
</div>
);
}