feat(site): implement dynamic site selection dropdown in sidebar and enable multi-site monitoring

This commit is contained in:
Rafif-Riqullah-Siregar committed 2026-07-13 16:57:45 +07:00
1 parent be6bc14190
commit 4882108068
125 files changed
+5666 -4305

No files matched your search

+23 -3
View File
@@ -80,18 +80,38 @@ export interface LookupApplicationsResponse {
};
}
export function useLookupApplications(page: number = 1, limit: number = 25, search: string = '') {
export function useLookupApplications(page: number = 1, limit: number = 25, search: string = '', category: string = '') {
const [data, setData] = useState<LookupApplicationsResponse | null>(null);
const [error, setError] = useState<Error | null>(null);
const [isLoading, setIsLoading] = useState(true);
useEffect(() => {
setIsLoading(true);
fetcher<LookupApplicationsResponse>(`/lookup/applications?page=${page}&limit=${limit}&search=${encodeURIComponent(search)}`)
let endpoint = `/lookup/applications?page=${page}&limit=${limit}&search=${encodeURIComponent(search)}`;
if (category) {
endpoint += `&category=${encodeURIComponent(category)}`;
}
fetcher<LookupApplicationsResponse>(endpoint)
.then(setData)
.catch(setError)
.finally(() => setIsLoading(false));
}, [page, limit, search]);
}, [page, limit, search, category]);
return { data, error, isLoading };
}
export function useLookupCategories() {
const [data, setData] = useState<string[]>([]);
const [error, setError] = useState<Error | null>(null);
const [isLoading, setIsLoading] = useState(true);
useEffect(() => {
setIsLoading(true);
fetcher<string[]>(`/lookup/categories`)
.then(setData)
.catch(setError)
.finally(() => setIsLoading(false));
}, []);
return { data, error, isLoading };
}