mirror of
https://github.com/tobspr/shapez.io.git
synced 2025-06-13 13:04:03 +00:00
Removed unnecessary compression step
The logic for returning default data is now in the `catch` part of the `readFileAsync` promise, so that new games don't trigger unnecessary compression and then decompression of the default data.
This commit is contained in:
parent
1046e7d4bd
commit
a04dff4d10
@ -165,19 +165,6 @@ export class ReadWriteProxy {
|
|||||||
return (
|
return (
|
||||||
this.app.storage
|
this.app.storage
|
||||||
.readFileAsync(this.filename)
|
.readFileAsync(this.filename)
|
||||||
|
|
||||||
// Check for errors during read
|
|
||||||
.catch(err => {
|
|
||||||
if (err === FILE_NOT_FOUND) {
|
|
||||||
logger.log("File not found, using default data");
|
|
||||||
|
|
||||||
// File not found or unreadable, assume default file
|
|
||||||
return Promise.resolve(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Promise.reject("file-error: " + err);
|
|
||||||
})
|
|
||||||
|
|
||||||
// Decrypt data (if its encrypted)
|
// Decrypt data (if its encrypted)
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
.then(rawData => {
|
.then(rawData => {
|
||||||
@ -211,19 +198,10 @@ export class ReadWriteProxy {
|
|||||||
"bad-content / checksum-mismatch: " + desiredChecksum + " vs " + checksum
|
"bad-content / checksum-mismatch: " + desiredChecksum + " vs " + checksum
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return jsonString;
|
|
||||||
} else {
|
|
||||||
if (!G_IS_DEV) {
|
|
||||||
return Promise.reject("bad-content / missing-compression");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return rawData;
|
|
||||||
})
|
|
||||||
|
|
||||||
// Parse JSON, this could throw but that's fine
|
// Parse JSON
|
||||||
.then(res => {
|
|
||||||
try {
|
try {
|
||||||
return JSON.parse(res);
|
return JSON.parse(jsonString);
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
logger.error(
|
logger.error(
|
||||||
"Failed to parse file content of",
|
"Failed to parse file content of",
|
||||||
@ -231,15 +209,34 @@ export class ReadWriteProxy {
|
|||||||
":",
|
":",
|
||||||
ex,
|
ex,
|
||||||
"(content was:",
|
"(content was:",
|
||||||
res,
|
jsonString,
|
||||||
")"
|
")"
|
||||||
);
|
);
|
||||||
throw new Error("invalid-serialized-data");
|
throw new Error("invalid-serialized-data");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!G_IS_DEV) {
|
||||||
|
return Promise.reject("bad-content / missing-compression");
|
||||||
|
}
|
||||||
|
return rawData;
|
||||||
|
})
|
||||||
|
// Check for errors during read
|
||||||
|
.catch(err => {
|
||||||
|
if (err === FILE_NOT_FOUND) {
|
||||||
|
logger.log("File not found, using default data");
|
||||||
|
|
||||||
|
// File not found or unreadable, assume default file
|
||||||
|
return Promise.resolve(this.getDefaultData());
|
||||||
|
}
|
||||||
|
|
||||||
|
return Promise.reject("file-error: " + err);
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
// Decompress
|
// Decompress
|
||||||
.then(compressed => decompressObject(compressed))
|
.then(decompressObject)
|
||||||
|
|
||||||
// Verify basic structure
|
// Verify basic structure
|
||||||
.then(contents => {
|
.then(contents => {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user