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

Compress clipboard data

Copy: Remove unneeded fields.
Paste: Verify required fields are present.
This commit is contained in:
FatCatX 2021-06-04 20:45:54 -07:00
parent 1b8e3716f0
commit fe021b1f0e
2 changed files with 15 additions and 4 deletions

View File

@ -34,7 +34,14 @@ export class Blueprint {
* Serialize
*/
serialize() {
return this.serializer.serializeEntityArray(this.entities);
let data = this.serializer.serializeEntityArray(this.entities);
// Remove unneeded fields
for (let i = 0; i < data.length; ++i) {
const entry = data[i];
delete entry.uid;
delete entry.components.WiredPins;
}
return data;
}
/**
@ -59,6 +66,10 @@ export class Blueprint {
if (value.components == undefined || value.components.StaticMapEntity == undefined) {
return;
}
const staticData = value.components.StaticMapEntity;
if (staticData.code == undefined || staticData.origin == undefined) {
return;
}
const result = new SerializerInternal().deserializeEntity(root, value);
if (typeof result === "string") {
throw new Error(result);

View File

@ -10,10 +10,10 @@ import { Blueprint } from "../../blueprint";
import { enumMouseButton } from "../../camera";
import { KEYMAPPINGS } from "../../key_action_mapper";
import { BaseHUDPart } from "../base_hud_part";
import { Entity } from "../../entity";
import { DynamicDomAttach } from "../dynamic_dom_attach";
import { globalConfig } from "../../../core/config";
import { paste } from "../../../core/clipboard_paste";
import { compressX64, decompressX64 } from "../../../core/lzstring";
const copy = require("clipboard-copy");
@ -223,7 +223,7 @@ export class HUDBlueprintPlacer extends BaseHUDPart {
const serializedBP = this.currentBlueprint.get().serialize();
try {
const json = JSON.stringify(serializedBP);
await copy(json);
await copy(compressX64(json));
this.root.soundProxy.playUi(SOUNDS.copy);
logger.debug("Copied blueprint to clipboard");
} catch (e) {
@ -239,7 +239,7 @@ export class HUDBlueprintPlacer extends BaseHUDPart {
let json;
try {
let data = await paste();
json = JSON.parse(data);
json = JSON.parse(decompressX64(data.trim()));
logger.debug("Received data from clipboard");
} catch (e) {
logger.error("Paste from clipboard failed:", e.message);