Skip to content

Commit 88d04be

Browse files
committed
fix: Acode ignoring main, readme and icon fields in plugin manifest
1 parent a9e4cd9 commit 88d04be

File tree

3 files changed

+14
-4
lines changed

3 files changed

+14
-4
lines changed

src/lib/installPlugin.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,20 @@ export default async function installPlugin(id, name, purchaseToken) {
5757
const zip = new JSZip();
5858
await zip.loadAsync(plugin);
5959

60-
if (!zip.files["plugin.json"] || !zip.files["main.js"]) {
60+
if (!zip.files["plugin.json"]) {
6161
throw new Error(strings["invalid plugin"]);
6262
}
6363

6464
const pluginJson = JSON.parse(
6565
await zip.files["plugin.json"].async("text"),
6666
);
6767

68+
if (!zip.files[pluginJson.main] && zip.files["main.js"]) {
69+
pluginJson.main = "main.js";
70+
} else if (!zip.files[pluginJson.main] && !zip.files["main.js"]) {
71+
throw new Error(strings["invalid plugin"]);
72+
}
73+
6874
if (!pluginDir) {
6975
pluginJson.source = pluginUrl;
7076
id = pluginJson.id;

src/lib/loadPlugin.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,12 @@ export default async function loadPlugin(pluginId, justInstalled = false) {
88
const baseUrl = await helpers.toInternalUri(Url.join(PLUGIN_DIR, pluginId));
99
const cacheFile = Url.join(CACHE_STORAGE, pluginId);
1010

11+
const pluginJson = await fsOperation(
12+
Url.join(PLUGIN_DIR, pluginId, "plugin.json"),
13+
).readFile("json");
14+
1115
return new Promise((resolve, reject) => {
12-
const $script = <script src={Url.join(baseUrl, "main.js")}></script>;
16+
const $script = <script src={Url.join(baseUrl, pluginJson.main)}></script>;
1317

1418
$script.onerror = (error) => {
1519
reject(new Error(`Failed to load script for plugin ${pluginId}`));

src/pages/plugin/plugin.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,10 @@ export default async function PluginInclude(
7777
).readFile("json");
7878
const { author } = installedPlugin;
7979
const description = await fsOperation(
80-
Url.join(PLUGIN_DIR, id, "readme.md"),
80+
Url.join(PLUGIN_DIR, id, installedPlugin.readme),
8181
).readFile("utf8");
8282
const iconUrl = await helpers.toInternalUri(
83-
Url.join(PLUGIN_DIR, id, "icon.png"),
83+
Url.join(PLUGIN_DIR, id, installedPlugin.icon),
8484
);
8585
const iconData = await fsOperation(iconUrl).readFile();
8686
const icon = URL.createObjectURL(

0 commit comments

Comments
 (0)