1
0
mirror of https://github.com/tobspr/shapez.io.git synced 2025-06-13 13:04:03 +00:00

Merge branch 'suggestion-fs-job' of https://github.com/DJ1TJOO/shapez.io into modloader

This commit is contained in:
DJ1TJOO 2021-03-14 16:22:17 +01:00
commit f74e296a62
2 changed files with 46 additions and 51 deletions

View File

@ -1,9 +1,8 @@
/* eslint-disable quotes,no-undef */ /* eslint-disable quotes,no-undef */
const { app, BrowserWindow, Menu, MenuItem, session } = require("electron"); const { app, BrowserWindow, Menu, MenuItem, ipcMain, shell } = require("electron");
const path = require("path"); const path = require("path");
const url = require("url"); const url = require("url");
const { ipcMain, shell } = require("electron");
const fs = require("fs"); const fs = require("fs");
const steam = require("./steam"); const steam = require("./steam");
const asyncLock = require("async-lock"); const asyncLock = require("async-lock");
@ -344,10 +343,14 @@ async function performFsJob(job) {
} }
} }
ipcMain.on("fs-job", async (event, arg) => { ipcMain.handle(
const result = await performFsJob(arg); "fs-job",
event.reply("fs-response", { id: arg.id, result }); (event, arg) =>
}); new Promise(async (resolve, reject) => {
const result = await performFsJob(arg);
resolve(result);
})
);
const emitProtocol = url => { const emitProtocol = url => {
const protocol = url.split("://")[0], const protocol = url.split("://")[0],

View File

@ -7,24 +7,6 @@ const logger = createLogger("electron-storage");
export class StorageImplElectron extends StorageInterface { export class StorageImplElectron extends StorageInterface {
constructor(app) { constructor(app) {
super(app); super(app);
/** @type {Object.<number, {resolve:Function, reject: Function}>} */
this.jobs = {};
this.jobId = 0;
getIPCRenderer().on("fs-response", (event, arg) => {
const id = arg.id;
if (!this.jobs[id]) {
logger.warn("Got unhandled FS response, job not known:", id);
return;
}
const { resolve, reject } = this.jobs[id];
if (arg.result.success) {
resolve(arg.result.data);
} else {
reject(arg.result.error);
}
});
} }
initialize() { initialize() {
@ -33,43 +15,53 @@ export class StorageImplElectron extends StorageInterface {
writeFileAsync(filename, contents) { writeFileAsync(filename, contents) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
// ipcMain getIPCRenderer()
const jobId = ++this.jobId; .invoke("fs-job", {
this.jobs[jobId] = { resolve, reject }; type: "write",
filename,
getIPCRenderer().send("fs-job", { contents,
type: "write", })
filename, .then(result => {
contents, if (result.success) {
id: jobId, resolve(result.data);
}); } else {
reject(result.error);
}
});
}); });
} }
readFileAsync(filename) { readFileAsync(filename) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
// ipcMain getIPCRenderer()
const jobId = ++this.jobId; .invoke("fs-job", {
this.jobs[jobId] = { resolve, reject }; type: "read",
filename,
getIPCRenderer().send("fs-job", { })
type: "read", .then(result => {
filename, if (result.success) {
id: jobId, resolve(result.data);
}); } else {
reject(result.error);
}
});
}); });
} }
deleteFileAsync(filename) { deleteFileAsync(filename) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
// ipcMain getIPCRenderer()
const jobId = ++this.jobId; .invoke("fs-job", {
this.jobs[jobId] = { resolve, reject }; type: "delete",
getIPCRenderer().send("fs-job", { filename,
type: "delete", })
filename, .then(result => {
id: jobId, if (result.success) {
}); resolve(result.data);
} else {
reject(result.error);
}
});
}); });
} }
} }