From 7f12634780f73442dc8b4f6eff2100c078e24c85 Mon Sep 17 00:00:00 2001 From: Lee-Orr Date: Thu, 21 Mar 2024 18:15:44 -0400 Subject: [PATCH] add url parameter for saving to the local file system `&mock-save` --- Cargo.lock | 103 +++++++++---------------- studio-frontend/src/app/app.element.ts | 36 +++++++-- studio-frontend/src/app/util.ts | 4 + 3 files changed, 70 insertions(+), 73 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8c525ff..2a4788a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -290,7 +290,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" dependencies = [ - "event-listener 2.5.3", + "event-listener", "futures-core", ] @@ -301,7 +301,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" dependencies = [ "concurrent-queue", - "event-listener 2.5.3", + "event-listener", "futures-core", ] @@ -320,15 +320,15 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.8.0" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c" +checksum = "78f2db9467baa66a700abce2a18c5ad793f6f83310aca1284796fc3921d113fd" dependencies = [ - "async-lock 3.3.0", + "async-lock", "async-task", "concurrent-queue", "fastrand 2.0.1", - "futures-lite 2.2.0", + "futures-lite 1.13.0", "slab", ] @@ -338,7 +338,7 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06" dependencies = [ - "async-lock 2.8.0", + "async-lock", "autocfg", "blocking", "futures-lite 1.13.0", @@ -350,18 +350,7 @@ version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" dependencies = [ - "event-listener 2.5.3", -] - -[[package]] -name = "async-lock" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" -dependencies = [ - "event-listener 4.0.3", - "event-listener-strategy", - "pin-project-lite", + "event-listener", ] [[package]] @@ -522,7 +511,7 @@ checksum = "935984568f75867dd7357133b06f4b1502cd2be55e4642d483ce597e46e63bff" dependencies = [ "async-broadcast", "async-fs", - "async-lock 2.8.0", + "async-lock", "bevy_app", "bevy_asset_macros", "bevy_ecs", @@ -671,7 +660,7 @@ dependencies = [ "bevy_tasks", "bevy_utils", "downcast-rs", - "event-listener 2.5.3", + "event-listener", "fixedbitset", "rustc-hash", "serde", @@ -1651,7 +1640,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c36a4d0d48574b3dd360b4b7d95cc651d2b6557b6402848a27d4b228a473e2a" dependencies = [ "async-channel", - "async-lock 2.8.0", + "async-lock", "async-task", "fastrand 2.0.1", "futures-io", @@ -2346,27 +2335,6 @@ version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" -[[package]] -name = "event-listener" -version = "4.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" -dependencies = [ - "event-listener 4.0.3", - "pin-project-lite", -] - [[package]] name = "exr" version = "1.72.0" @@ -3117,7 +3085,7 @@ dependencies = [ "curl", "curl-sys", "encoding_rs", - "event-listener 2.5.3", + "event-listener", "futures-lite 1.13.0", "http", "log", @@ -3226,9 +3194,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" dependencies = [ "wasm-bindgen", ] @@ -3307,9 +3275,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.153" +version = "0.2.148" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" [[package]] name = "libloading" @@ -3901,9 +3869,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "openssl" @@ -4449,15 +4417,15 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.31" +version = "0.38.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3" dependencies = [ "bitflags 2.4.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.48.0", ] [[package]] @@ -4550,9 +4518,9 @@ checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" [[package]] name = "serde" -version = "1.0.197" +version = "1.0.192" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" dependencies = [ "serde_derive", ] @@ -4570,9 +4538,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.192" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" dependencies = [ "proc-macro2", "quote", @@ -4891,6 +4859,7 @@ dependencies = [ "serde_repr", "space_editor", "studio-bvh", + "uuid", "wasm-bindgen", "web-sys", "wgpu", @@ -5008,18 +4977,18 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.4.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" dependencies = [ "winapi-util", ] [[package]] name = "thiserror" -version = "1.0.58" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" dependencies = [ "thiserror-impl", ] @@ -5046,9 +5015,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "1.0.58" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" dependencies = [ "proc-macro2", "quote", @@ -5424,9 +5393,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" dependencies = [ "cfg-if", "js-sys", @@ -5489,9 +5458,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.67" +version = "0.3.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" +checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85" dependencies = [ "js-sys", "wasm-bindgen", diff --git a/studio-frontend/src/app/app.element.ts b/studio-frontend/src/app/app.element.ts index e99d07b..b5fe25d 100644 --- a/studio-frontend/src/app/app.element.ts +++ b/studio-frontend/src/app/app.element.ts @@ -39,6 +39,7 @@ import "./anim-editor.element"; import "./help.element"; import "./app.element.scss"; +import { mock_save_load } from "./util"; @customElement("app-root") @provide({ @@ -72,13 +73,36 @@ export class AppElement extends LitElement { async onSceneSaved({ detail: scene }: SceneSavedEvent): Promise { try { const file = new File([scene], "scene.scn.ron", { type: "text/ron" }); - const token = await this.api.createScene(file); + if (mock_save_load()) { + let handle = await window.showSaveFilePicker({ + suggestedName: "scene", + types: [{ + description: "Scene Files", + accept: { + "text/ron": [".scn.ron"] + } + }] + }); + let writable = await handle.createWritable(); + await writable.write(file); + await writable.close(); + let token = handle.name; - this.dispatchEvent(new CustomEvent("scene-uploaded", { - detail: token, - bubbles: true, - composed: true, - })); + this.dispatchEvent(new CustomEvent("scene-uploaded", { + detail: token, + bubbles: true, + composed: true, + })); + + } else { + const token = await this.api.createScene(file); + + this.dispatchEvent(new CustomEvent("scene-uploaded", { + detail: token, + bubbles: true, + composed: true, + })); + } } catch (err) { console.error(err); diff --git a/studio-frontend/src/app/util.ts b/studio-frontend/src/app/util.ts index 302c206..20bcc69 100644 --- a/studio-frontend/src/app/util.ts +++ b/studio-frontend/src/app/util.ts @@ -3,3 +3,7 @@ export function isDevEnvironment(): boolean { || window.location.hostname === "127.0.0.1" || window.location.hostname.includes("deploy-preview"); } + +export function mock_save_load(): boolean { + return window.location.search.includes("mock-saves"); +} \ No newline at end of file