mirror of
https://github.com/zaphar/kitchen.git
synced 2025-07-22 19:40:14 -04:00
fix: Issue when loading user state from local storage
This commit is contained in:
parent
4cefe42072
commit
0b7f513f27
@ -25,7 +25,7 @@ use recipes::{IngredientKey, RecipeEntry};
|
||||
use wasm_bindgen::JsValue;
|
||||
use web_sys::Storage;
|
||||
|
||||
use crate::{app_state::AppState, js_lib};
|
||||
use crate::{app_state::{AppState, parse_recipes}, js_lib};
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Error(String);
|
||||
@ -100,8 +100,21 @@ impl LocalStore {
|
||||
}
|
||||
|
||||
pub fn fetch_app_state(&self) -> Option<AppState> {
|
||||
debug!("Loading state from local store");
|
||||
self.store.get("app_state").map_or(None, |val| {
|
||||
val.map(|s| from_str(&s).expect("Failed to deserialize app state"))
|
||||
val.map(|s| {
|
||||
debug!("Found an app_state object");
|
||||
let mut app_state: AppState = from_str(&s).expect("Failed to deserialize app state");
|
||||
let recipes = parse_recipes(&self.get_recipes()).expect("Failed to parse recipes");
|
||||
if let Some(recipes) = recipes {
|
||||
debug!("Populating recipes");
|
||||
for (id, recipe) in recipes {
|
||||
debug!(id, "Adding recipe from local storage");
|
||||
app_state.recipes.insert(id, recipe);
|
||||
}
|
||||
}
|
||||
app_state
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -142,7 +142,7 @@ pub struct StateMachine {
|
||||
}
|
||||
|
||||
#[instrument]
|
||||
fn parse_recipes(
|
||||
pub fn parse_recipes(
|
||||
recipe_entries: &Option<Vec<RecipeEntry>>,
|
||||
) -> Result<Option<BTreeMap<String, Recipe>>, String> {
|
||||
match recipe_entries {
|
||||
|
@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
use sycamore::{futures::spawn_local_scoped, prelude::*};
|
||||
use tracing::{info, instrument};
|
||||
use tracing::{info, debug, instrument};
|
||||
|
||||
use crate::app_state::Message;
|
||||
use crate::{api, routing::Handler as RouteHandler};
|
||||
@ -29,6 +29,7 @@ pub fn UI<G: Html>(cx: Scope) -> View<G> {
|
||||
} else {
|
||||
crate::app_state::AppState::new()
|
||||
};
|
||||
debug!(?app_state, "Loaded app state from local storage");
|
||||
let sh = crate::app_state::get_state_handler(cx, app_state, store);
|
||||
let view = create_signal(cx, View::empty());
|
||||
spawn_local_scoped(cx, {
|
||||
|
Loading…
x
Reference in New Issue
Block a user