web: Add create_storage_backend to builder
This commit is contained in:
parent
b727610cc4
commit
8ce7e82a0d
|
@ -1,8 +1,9 @@
|
|||
use crate::navigator::WebNavigatorBackend;
|
||||
use crate::{audio, JavascriptPlayer, RuffleHandle, SocketProxy, RUFFLE_GLOBAL_PANIC};
|
||||
use crate::{audio, storage, JavascriptPlayer, RuffleHandle, SocketProxy, RUFFLE_GLOBAL_PANIC};
|
||||
use js_sys::Promise;
|
||||
use ruffle_core::backend::audio::{AudioBackend, NullAudioBackend};
|
||||
use ruffle_core::backend::navigator::OpenURLMode;
|
||||
use ruffle_core::backend::storage::{MemoryStorageBackend, StorageBackend};
|
||||
use ruffle_core::backend::ui::FontDefinition;
|
||||
use ruffle_core::compatibility_rules::CompatibilityRules;
|
||||
use ruffle_core::config::{Letterbox, NetworkingAccessMode};
|
||||
|
@ -542,4 +543,14 @@ impl RuffleInstanceBuilder {
|
|||
self.credential_allow_list.clone(),
|
||||
)
|
||||
}
|
||||
|
||||
pub fn create_storage_backend(&self) -> Box<dyn StorageBackend> {
|
||||
match web_sys::window().expect("window()").local_storage() {
|
||||
Ok(Some(s)) => Box::new(storage::LocalStorageBackend::new(s)),
|
||||
err => {
|
||||
tracing::warn!("Unable to use localStorage: {:?}\nData will not save.", err);
|
||||
Box::new(MemoryStorageBackend::new())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -398,16 +398,8 @@ impl RuffleHandle {
|
|||
let mut builder = PlayerBuilder::new()
|
||||
.with_boxed_renderer(renderer)
|
||||
.with_boxed_audio(config.create_audio_backend(log_subscriber.clone()))
|
||||
.with_navigator(config.create_navigator(log_subscriber.clone()));
|
||||
|
||||
match window.local_storage() {
|
||||
Ok(Some(s)) => {
|
||||
builder = builder.with_storage(Box::new(storage::LocalStorageBackend::new(s)));
|
||||
}
|
||||
err => {
|
||||
tracing::warn!("Unable to use localStorage: {:?}\nData will not save.", err);
|
||||
}
|
||||
};
|
||||
.with_navigator(config.create_navigator(log_subscriber.clone()))
|
||||
.with_storage(config.create_storage_backend());
|
||||
|
||||
// Create the external interface.
|
||||
if allow_script_access && allow_networking == NetworkingAccessMode::All {
|
||||
|
|
Loading…
Reference in New Issue