Files
Beyhan Oğur 880f412e2c first commit
2026-04-26 21:52:23 +03:00

54 lines
1.8 KiB
TypeScript

import { getErrorMessage, useAppSelector, useUpdatePluginMutation } from "@/lib/store";
import { MaximConfigSchema, MaximFormSchema } from "@/lib/types/schemas";
import { useMemo } from "react";
import { toast } from "sonner";
import { MaximFormFragment } from "../../fragments/maximFormFragment";
interface MaximViewProps {
onDelete?: () => void;
isDeleting?: boolean;
}
export default function MaximView({ onDelete, isDeleting }: MaximViewProps) {
const selectedPlugin = useAppSelector((state) => state.plugin.selectedPlugin);
const [updatePlugin] = useUpdatePluginMutation();
const currentConfig = useMemo(
() => ({ ...((selectedPlugin?.config as MaximConfigSchema) ?? {}), enabled: selectedPlugin?.enabled }),
[selectedPlugin],
);
const handleMaximConfigSave = (config: MaximFormSchema): Promise<void> => {
return new Promise((resolve, reject) => {
updatePlugin({
name: "maxim",
data: {
enabled: config.enabled,
config: config.maxim_config,
},
})
.unwrap()
.then(() => {
toast.success("Maxim configuration updated successfully");
resolve();
})
.catch((err) => {
toast.error("Failed to update Maxim configuration", {
description: getErrorMessage(err),
});
reject(err);
});
});
};
return (
<div className="flex w-full flex-col gap-4">
<div className="flex w-full flex-col gap-2">
<div className="text-muted-foreground text-xs font-medium">Configuration</div>
<div className="text-muted-foreground mb-2 text-xs font-normal">
You can send in header <code>x-bf-log-repo-id</code> with a repository ID to log to a specific repository.
</div>
<MaximFormFragment onSave={handleMaximConfigSave} initialConfig={currentConfig} onDelete={onDelete} isDeleting={isDeleting} />
</div>
</div>
);
}