Skip to content

Commit c1b1fba

Browse files
committed
refactor: send addons in chunks instead of pages
1 parent b37a776 commit c1b1fba

File tree

3 files changed

+15
-22
lines changed

3 files changed

+15
-22
lines changed

client/src/addon_manager/commands/getAddonsPage.ts renamed to client/src/addon_manager/commands/getAddons.ts

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,9 @@ import { ADDONS_DIRECTORY } from "../config";
66

77
const localLogger = createChildLogger("Get Remote Addons");
88

9-
type Message = {
10-
data: { page: number; pageSize?: number };
11-
};
12-
13-
export default async (context: vscode.ExtensionContext, message: Message) => {
9+
export default async (context: vscode.ExtensionContext) => {
1410
WebVue.setLoadingState(true);
1511

16-
const { page, pageSize } = message.data;
17-
1812
const installLocation = vscode.Uri.joinPath(
1913
context.globalStorageUri,
2014
"addonManager",
@@ -36,10 +30,19 @@ export default async (context: vscode.ExtensionContext, message: Message) => {
3630
return;
3731
}
3832

39-
const addonList = await addonManager.getAddonsPage(page, pageSize ?? 10);
33+
/** Number of addons to load per chunk */
34+
const CHUNK_SIZE = 30;
4035

41-
const addons = await Promise.all(addonList.map((addon) => addon.toJSON()));
36+
// Get list of addons and sort them alphabetically
37+
const addonList = Array.from(addonManager.addons.values());
38+
addonList.sort((a, b) => a.displayName.localeCompare(b.displayName));
39+
40+
// Send addons to client in chunks
41+
for (let i = 0; i <= addonList.length / CHUNK_SIZE; i++) {
42+
const chunk = addonList.slice(i * CHUNK_SIZE, i * CHUNK_SIZE + CHUNK_SIZE);
43+
const addons = await Promise.all(chunk.map((addon) => addon.toJSON()));
44+
await WebVue.sendMessage("addAddon", { addons });
45+
}
4246

43-
WebVue.sendMessage("addAddon", { addons });
4447
WebVue.setLoadingState(false);
4548
};

client/src/addon_manager/commands/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import enable from "./enable";
22
import disable from "./disable";
33
import open from "./open";
4-
import getAddonsPage from "./getAddonsPage";
4+
import getAddons from "./getAddons";
55
import refreshAddons from "./refreshAddons";
66
import openLog from "./openLog";
77
import update from "./update";
@@ -11,7 +11,7 @@ export const commands = {
1111
enable,
1212
disable,
1313
open,
14-
getAddonsPage,
14+
getAddons,
1515
refreshAddons,
1616
openLog,
1717
update,

client/src/addon_manager/services/addonManager.service.ts

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,6 @@ class AddonManager {
2525
return await this.checkUpdated();
2626
}
2727

28-
/** Get a page of local addons */
29-
public getAddonsPage(page: number, pageSize: number): Addon[] {
30-
const start = (page - 1) * pageSize;
31-
const addons = Array.from(this.addons.values());
32-
33-
addons.sort((a, b) => a.displayName.localeCompare(b.displayName));
34-
35-
return addons.slice(start, start + pageSize);
36-
}
37-
3828
public async checkUpdated() {
3929
const diff = await git.diffSummary([
4030
"main",

0 commit comments

Comments
 (0)