impplement pageing between native host and browser extension
This commit is contained in:
+21
-1
@@ -97,7 +97,11 @@ async function onMessage(msg) {
|
||||
|
||||
let data, error;
|
||||
try {
|
||||
data = await dispatch(command, args || {});
|
||||
const { __page, ...commandArgs } = args || {};
|
||||
data = await dispatch(command, commandArgs);
|
||||
if (__page && Array.isArray(data)) {
|
||||
data = makePagedData(data, __page);
|
||||
}
|
||||
} catch (e) {
|
||||
error = e.message || String(e);
|
||||
}
|
||||
@@ -117,6 +121,22 @@ async function onMessage(msg) {
|
||||
}
|
||||
}
|
||||
|
||||
function makePagedData(items, page) {
|
||||
const total = items.length;
|
||||
const offset = Math.max(0, Number(page.offset) || 0);
|
||||
const requestedLimit = Math.max(1, Number(page.limit) || 100);
|
||||
const limit = Math.min(requestedLimit, 1000);
|
||||
const end = Math.min(offset + limit, total);
|
||||
return {
|
||||
__browserCliPage: true,
|
||||
items: items.slice(offset, end),
|
||||
offset,
|
||||
limit,
|
||||
total,
|
||||
nextOffset: end < total ? end : null,
|
||||
};
|
||||
}
|
||||
|
||||
async function dispatch(command, args) {
|
||||
switch (command) {
|
||||
// ── Navigation ────────────────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user