impplement pageing between native host and browser extension

This commit is contained in:
2026-05-01 19:07:46 +02:00
parent 5ff340a6d3
commit fb78fd0471
3 changed files with 148 additions and 16 deletions
+21 -1
View File
@@ -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 ────────────────────────────────────────────────────────