mirror of
https://github.com/tobspr/shapez.io.git
synced 2025-06-13 13:04:03 +00:00
Changed electron fs-job to invoke, for simplefying storage
(And it helps for the modloader)
This commit is contained in:
parent
5a3da57f10
commit
ecd4d36f87
@ -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");
|
||||||
@ -287,10 +286,14 @@ async function performFsJob(job) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ipcMain.on("fs-job", async (event, arg) => {
|
ipcMain.handle(
|
||||||
|
"fs-job",
|
||||||
|
(event, arg) =>
|
||||||
|
new Promise(async (resolve, reject) => {
|
||||||
const result = await performFsJob(arg);
|
const result = await performFsJob(arg);
|
||||||
event.reply("fs-response", { id: arg.id, result });
|
resolve(result);
|
||||||
});
|
})
|
||||||
|
);
|
||||||
|
|
||||||
steam.init(isDev);
|
steam.init(isDev);
|
||||||
steam.listen();
|
steam.listen();
|
||||||
|
|||||||
@ -10,12 +10,10 @@
|
|||||||
"start": "electron --disable-direct-composition --in-process-gpu ."
|
"start": "electron --disable-direct-composition --in-process-gpu ."
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"electron": "10.4.0"
|
"electron": "10.4.0",
|
||||||
|
"async-lock": "^1.2.8"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"shapez.io-private-artifacts": "github:tobspr/shapez.io-private-artifacts#abi-v85"
|
"shapez.io-private-artifacts": "github:tobspr/shapez.io-private-artifacts#abi-v85"
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"async-lock": "^1.2.8"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -503,10 +503,6 @@ serialize-error@^7.0.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
type-fest "^0.13.1"
|
type-fest "^0.13.1"
|
||||||
|
|
||||||
"shapez.io-private-artifacts@github:tobspr/shapez.io-private-artifacts#abi-v85":
|
|
||||||
version "0.1.0"
|
|
||||||
resolved "git+ssh://git@github.com/tobspr/shapez.io-private-artifacts.git#63adf7e0ea4b90c2a29053ce1f0ec9d573b3ac0a"
|
|
||||||
|
|
||||||
sprintf-js@^1.1.2:
|
sprintf-js@^1.1.2:
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673"
|
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673"
|
||||||
|
|||||||
@ -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,42 +15,52 @@ 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 };
|
|
||||||
|
|
||||||
getIPCRenderer().send("fs-job", {
|
|
||||||
type: "write",
|
type: "write",
|
||||||
filename,
|
filename,
|
||||||
contents,
|
contents,
|
||||||
id: jobId,
|
})
|
||||||
|
.then(result => {
|
||||||
|
if (result.success) {
|
||||||
|
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 };
|
|
||||||
|
|
||||||
getIPCRenderer().send("fs-job", {
|
|
||||||
type: "read",
|
type: "read",
|
||||||
filename,
|
filename,
|
||||||
id: jobId,
|
})
|
||||||
|
.then(result => {
|
||||||
|
if (result.success) {
|
||||||
|
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 };
|
|
||||||
getIPCRenderer().send("fs-job", {
|
|
||||||
type: "delete",
|
type: "delete",
|
||||||
filename,
|
filename,
|
||||||
id: jobId,
|
})
|
||||||
|
.then(result => {
|
||||||
|
if (result.success) {
|
||||||
|
resolve(result.data);
|
||||||
|
} else {
|
||||||
|
reject(result.error);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user