diff --git a/studio-web/src/lib/storyteller-api.ts b/studio-web/src/lib/storyteller-api.ts index 8c07884..bc786d3 100644 --- a/studio-web/src/lib/storyteller-api.ts +++ b/studio-web/src/lib/storyteller-api.ts @@ -5,7 +5,7 @@ import * as studio from "@storyteller/studio"; const mockApi = window.location.search.includes("mock-api"); -interface StorytellerApiInterface { +interface IStorytellerApi { createScene(file: File): Promise session(): Promise listMediaFiles(options: ListMediaFilesOptions): Promise @@ -18,7 +18,7 @@ interface StorytellerApiInterface { mediaFile(token: MediaFileToken): Promise } -class StorytellerApiBase implements StorytellerApiInterface { +class StorytellerApiBase implements IStorytellerApi { #api = axios.create({ baseURL: "https://api.fakeyou.com", withCredentials: true, @@ -137,7 +137,7 @@ interface LocalDbSchema extends DBSchema { } } -class StorytellerApiMock implements StorytellerApiInterface { +class StorytellerApiMock implements IStorytellerApi { database?: IDBPDatabase; dateFormat: Intl.DateTimeFormat = new Intl.DateTimeFormat("en-us") @@ -435,7 +435,7 @@ class StorytellerApiMock implements StorytellerApiInterface { } } -export class StorytellerApi implements StorytellerApiInterface { +export class StorytellerApi implements IStorytellerApi { createScene(file: File): Promise { return this.api_base.createScene(file) } @@ -457,7 +457,7 @@ export class StorytellerApi implements StorytellerApiInterface { mediaFile(token: string): Promise { return this.api_base.mediaFile(token) } - api_base: StorytellerApiInterface = mockApi ? new StorytellerApiMock() : new StorytellerApiBase(); + api_base: IStorytellerApi = mockApi ? new StorytellerApiMock() : new StorytellerApiBase(); } export class ApiError extends Error { diff --git a/studio/src/remote/reader.rs b/studio/src/remote/reader.rs index 514eedf..bab1a6e 100644 --- a/studio/src/remote/reader.rs +++ b/studio/src/remote/reader.rs @@ -80,7 +80,7 @@ impl RemoteAssetReader { Ok(reader) } - #[cfg(feature = "wasm")] + #[cfg(all(feature = "wasm", target_family = "wasm"))] async fn load_local<'a>(&'a self, path: &'a Path) -> Result>, AssetReaderError> { let token = path .ext_file_prefix() @@ -109,12 +109,16 @@ impl AssetReader for RemoteAssetReader { &'a self, path: &'a Path, ) -> BoxedFuture<'a, Result>, AssetReaderError>> { - if cfg!(not(feature = "wasm")) { + #[cfg(not(all(feature = "wasm", target_family = "wasm")))] + { info!("wasm mode not detected"); // NB: Headless mode (server rendering) is running without a Tokio runtime. // The reqwest HTTP client requires async-compat to function at runtime. Box::pin(Compat::new(async move { self.load(path).await })) - } else { + } + + #[cfg(all(feature = "wasm", target_family = "wasm"))] + { info!("wasm mode"); if let Some(window) = web_sys::window() { if let Ok(search) = window.location().search() { @@ -159,7 +163,7 @@ impl IntoError for reqwest::Error { } } -#[cfg(feature = "wasm")] +#[cfg(all(feature = "wasm", target_family = "wasm"))] mod wasm { use std::task::Waker;