initial commit
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user