adjust citysite table name to activesites

This commit is contained in:
Alberto-Audrix committed 2026-09-11 15:51:29 +07:00
1 parent fb0f996776
commit 64b37b6b6d
27 files changed
+382 -221

No files matched your search

+14 -14
View File
@@ -2,7 +2,7 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react';
import { api, errorMessage } from '../services/apiClient.ts';
import { useAuth } from '../context/AuthContext.tsx';
import { useFarm } from '../context/FarmContext.tsx';
import type { CitySite, User, UserStatus } from '../types/api.ts';
import type { ActiveSite, User, UserStatus } from '../types/api.ts';
import { Banner, PageHeader, Spinner } from './ui/Feedback.tsx';
const inputClass =
@@ -38,7 +38,7 @@ const BuhViewList: React.FC = () => {
const isPrimaryBuh = user?.status === 'buh';
const [gms, setGms] = useState<User[]>([]);
const [pending, setPending] = useState<User[]>([]);
const [citySites, setCitySites] = useState<CitySite[]>([]);
const [activeSites, setActiveSites] = useState<ActiveSite[]>([]);
const [loading, setLoading] = useState(true);
const [busyId, setBusyId] = useState<number | null>(null);
const [error, setError] = useState<string | null>(null);
@@ -49,11 +49,11 @@ const BuhViewList: React.FC = () => {
setError(null);
try {
const nextUsers = await api.users.list();
const nextSites = await api.citySites.list();
const nextSites = await api.activeSites.list();
const nextPending = isPrimaryBuh ? await api.users.listPendingManaged() : [];
setGms(nextUsers.filter((u) => u.status === 'gm'));
setPending(nextPending);
setCitySites(nextSites);
setActiveSites(nextSites);
} catch (err) {
setError(errorMessage(err));
} finally {
@@ -66,15 +66,15 @@ const BuhViewList: React.FC = () => {
}, [reload]);
const sitesByGm = useMemo(() => {
const map = new Map<number, CitySite[]>();
for (const site of citySites) {
const map = new Map<number, ActiveSite[]>();
for (const site of activeSites) {
if (site.registered_by == null) continue;
const rows = map.get(site.registered_by) ?? [];
rows.push(site);
map.set(site.registered_by, rows);
}
return map;
}, [citySites]);
}, [activeSites]);
const decide = async (gmId: number, decision: 'approve' | 'reject') => {
setBusyId(gmId);
@@ -212,7 +212,7 @@ const BuhViewList: React.FC = () => {
const GmViewList: React.FC = () => {
const { user, refreshUser } = useAuth();
const { reload: reloadFarm } = useFarm();
const [citySites, setCitySites] = useState<CitySite[]>([]);
const [activeSites, setActiveSites] = useState<ActiveSite[]>([]);
const [buhs, setBuhs] = useState<User[]>([]);
const [selectedBuhId, setSelectedBuhId] = useState<number | ''>('');
const [loading, setLoading] = useState(true);
@@ -236,12 +236,12 @@ const GmViewList: React.FC = () => {
setLoading(true);
setError(null);
try {
const sitesPromise = api.citySites.list();
const sitesPromise = api.activeSites.list();
const mePromise = refreshUser();
const buhsPromise =
user?.status === 'gm' ? api.users.listBuhs() : Promise.resolve([] as User[]);
const [sites, me, nextBuhs] = await Promise.all([sitesPromise, mePromise, buhsPromise]);
setCitySites(sites);
setActiveSites(sites);
setBuhs(nextBuhs);
if (me?.managed_by_pending) {
setSelectedBuhId(me.managed_by_pending);
@@ -409,7 +409,7 @@ const GmViewList: React.FC = () => {
const resolvedCode = code || slugify(name);
if (!resolvedCode) return;
void wrap(async () => {
const created = await api.citySites.create({
const created = await api.activeSites.create({
code: resolvedCode,
name: name.trim(),
api_base_url: apiBaseUrl.trim(),
@@ -487,11 +487,11 @@ const GmViewList: React.FC = () => {
</p>
{loading ? (
<Spinner />
) : citySites.length === 0 ? (
) : activeSites.length === 0 ? (
<p className="text-sm text-gray-500">Belum ada site di daftar tampilan.</p>
) : (
<ul className="divide-y">
{citySites.map((site) => (
{activeSites.map((site) => (
<li key={site.id} className="py-3 flex items-start justify-between gap-3">
<div className="min-w-0">
<p className="text-sm font-semibold text-gray-800 truncate">{site.name}</p>
@@ -516,7 +516,7 @@ const GmViewList: React.FC = () => {
disabled={saving}
onClick={() =>
void wrap(async () => {
await api.citySites.remove(site.id);
await api.activeSites.remove(site.id);
flash(`Site ${site.name} dihapus dari daftar tampilan.`);
})
}
+1 -1
View File
@@ -41,7 +41,7 @@ const {
vi.mock('../../services/apiClient.ts', () => ({
api: {
citySites: {
activeSites: {
list: listMock,
create: createMock,
remove: removeMock,