adjust citysite table name to activesites
This commit is contained in:
1 parent
fb0f996776
commit
64b37b6b6d
27 files changed
+382
-221
No files matched your search
+14
-14
@@ -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.`);
|
||||
})
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ const {
|
||||
|
||||
vi.mock('../../services/apiClient.ts', () => ({
|
||||
api: {
|
||||
citySites: {
|
||||
activeSites: {
|
||||
list: listMock,
|
||||
create: createMock,
|
||||
remove: removeMock,
|
||||
|
||||
Reference in new issue
Block a user