'use client';
import { useState } from 'react';
import { Card, CardContent } from '@/figma-make/components/base/card';
import { toast } from 'sonner';
import useSWR from 'swr';
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
import { SystemSettingsApi } from '@/services/api/system-settings';
import { SystemSetting } from '@/types/api/system-settings/system-setting';
const ALLOW_NEGATIVE_PAKAN_OVK_KEY = 'allow_negative_pakan_ovk';
function SettingToggle({
setting,
onToggle,
loading,
}: {
setting: SystemSetting;
onToggle: (key: string, currentValue: boolean) => void;
loading: boolean;
}) {
const isEnabled = setting.value === 'true';
return (
{setting.key === ALLOW_NEGATIVE_PAKAN_OVK_KEY
? 'Mode Migrasi PAKAN & OVK'
: setting.key}
{setting.description && (
{setting.description}
)}
{isEnabled ? 'Aktif' : 'Nonaktif'}
);
}
export function SystemConfigContent() {
const [toggling, setToggling] = useState(null);
const {
data: settingsResponse,
isLoading,
mutate: refreshSettings,
} = useSWR(SystemSettingsApi.basePath, SystemSettingsApi.getAllFetcher, {
keepPreviousData: true,
});
const handleToggle = async (key: string, currentValue: boolean) => {
if (key !== ALLOW_NEGATIVE_PAKAN_OVK_KEY) return;
setToggling(key);
try {
const res = await SystemSettingsApi.setAllowNegativePakanOvk({
value: !currentValue,
});
if (isResponseError(res)) {
toast.error(res.message || 'Gagal mengubah pengaturan');
return;
}
await refreshSettings();
toast.success(
!currentValue
? 'Mode migrasi PAKAN & OVK diaktifkan'
: 'Mode migrasi PAKAN & OVK dinonaktifkan'
);
} catch {
toast.error('Terjadi kesalahan saat mengubah pengaturan');
} finally {
setToggling(null);
}
};
const settings = isResponseSuccess(settingsResponse)
? settingsResponse.data
: [];
if (isLoading && !settingsResponse) {
return (
Konfigurasi Sistem
Master Data •{' '}
Konfigurasi Sistem
Memuat data...
);
}
return (
Konfigurasi Sistem
Master Data •{' '}
Konfigurasi Sistem
Pengaturan Global
Pengaturan ini berlaku untuk seluruh sistem.
{settings.length === 0 ? (
Tidak ada pengaturan tersedia.
) : (
settings.map((setting) => (
))
)}
);
}