initial commit

This commit is contained in:
2026-08-26 15:01:15 +05:30
parent aa42d9ee81
commit cf4f4ecd9c
87 changed files with 12814 additions and 2328 deletions

View File

@@ -1,4 +1,4 @@
import doormileAxios, { DOORMILE_TOKEN_KEY, DOORMILE_USER_KEY } from './client';
import doormileAxios, { DOORMILE_TOKEN_KEY, DOORMILE_USER_KEY, clearStoredSession } from './client';
// The Doormile Express admin API — one named async export per
// `api.doormile.com/api/v1/admin/*` endpoint.
@@ -34,8 +34,8 @@ export const loginAdmin = async (email, password) => {
};
export const logoutAdmin = () => {
localStorage.removeItem(DOORMILE_TOKEN_KEY);
localStorage.removeItem(DOORMILE_USER_KEY);
// Clears the auxiliary identity keys too — see clearStoredSession in client.js.
clearStoredSession();
};
// Drains a paginated list endpoint instead of taking whatever the server's
@@ -366,8 +366,37 @@ export const getMilerActivity = async (id, from, to) => {
// ==============================|| Bookings ||============================== //
export const getBookings = async (pageno, pagesize) => {
const response = await doormileAxios.get(`/admin/bookings${buildQuery({ pageno, pagesize })}`);
return response.data.data;
// If caller specifically requested page > 1 with small page size:
if (pageno > 1 && pagesize && pagesize < 100) {
const response = await doormileAxios.get(`/admin/bookings${buildQuery({ pageno, pagesize })}`);
return response.data.data || [];
}
// The backend hard-caps pagesize at 100 per request.
// Drain all pages so no bookings are silently lost.
const firstRes = await doormileAxios.get(`/admin/bookings${buildQuery({ pageno: 1, pagesize: 100 })}`);
const body = firstRes.data || {};
const firstRows = body.data || [];
const total = Number.isFinite(Number(body.total)) ? Number(body.total) : firstRows.length;
if (firstRows.length >= total || firstRows.length < 100) {
return firstRows;
}
const allRows = [...firstRows];
const totalPages = Math.ceil(total / 100);
for (let p = 2; p <= totalPages; p++) {
try {
const res = await doormileAxios.get(`/admin/bookings${buildQuery({ pageno: p, pagesize: 100 })}`);
const rows = res.data?.data || [];
if (!rows.length) break;
allRows.push(...rows);
if (allRows.length >= total) break;
} catch {
break;
}
}
return allRows;
};
// Same request as getBookings, but keeps the envelope's `total`/`page` instead