MISC: Support importing Steam Cloud save file manually (#2583)

This commit is contained in:
catloversg
2026-03-22 12:23:43 +07:00
committed by GitHub
parent a9bb3f6d2f
commit 77cc7874ab
5 changed files with 80 additions and 10 deletions

View File

@@ -1,15 +1,21 @@
/* eslint-disable @typescript-eslint/no-var-requires */
const fs = require("fs").promises;
const path = require("path");
const { isBinaryFormat } = require("../electron/saveDataBinaryFormat");
const { decodeBase64BytesToBytes, isBinaryFormat, isSteamCloudFormat } = require("../electron/saveDataBinaryFormat");
async function decompress(data) {
const decompressedReadableStream = new Blob([data]).stream().pipeThrough(new DecompressionStream("gzip"));
return await new Response(decompressedReadableStream).text();
}
async function getSave(file) {
const data = await fs.readFile(file);
let jsonSaveString;
if (isBinaryFormat(data)) {
const decompressedReadableStream = new Blob([data]).stream().pipeThrough(new DecompressionStream("gzip"));
jsonSaveString = await new Response(decompressedReadableStream).text();
jsonSaveString = await decompress(data);
} else if (isSteamCloudFormat(data)) {
jsonSaveString = await decompress(decodeBase64BytesToBytes(data));
} else {
jsonSaveString = decodeURIComponent(escape(atob(data)));
}