dev: migrate recipes from localstorage to indexeddb

This commit is contained in:
Jeremy Wall 2024-07-12 19:07:59 -04:00
parent f173204d2d
commit 9f3b11a01f

View File

@ -19,7 +19,7 @@ use gloo_net;
// TODO(jwall): Remove this when we have gone a few migrations past. // TODO(jwall): Remove this when we have gone a few migrations past.
use serde_json::{from_str, to_string}; use serde_json::{from_str, to_string};
use sycamore::prelude::*; use sycamore::prelude::*;
use tracing::{debug, error, instrument}; use tracing::{debug, error, field::debug, instrument};
use anyhow::Result; use anyhow::Result;
use client_api::*; use client_api::*;
@ -109,12 +109,13 @@ impl LocalStore {
pub async fn migrate(&self) { pub async fn migrate(&self) {
// 1. migrate app-state from localstore to indexeddb // 1. migrate app-state from localstore to indexeddb
if let Ok(Some(v)) = self.old_store.get(APP_STATE_KEY) { debug("Peforming localstorage migration");
if let Ok(Some(v)) = self.old_store.get("app_state") {
if let Ok(Some(local_state)) = from_str::<Option<AppState>>(&v) { if let Ok(Some(local_state)) = from_str::<Option<AppState>>(&v) {
self.store_app_state(&local_state).await; self.store_app_state(&local_state).await;
} }
} }
let _ = self.old_store.remove_item(APP_STATE_KEY); let _ = self.old_store.remove_item("app_state");
// 2. migrate user-state from localstore to indexeddb // 2. migrate user-state from localstore to indexeddb
if let Ok(Some(v)) = self.old_store.get(USER_DATA_KEY) { if let Ok(Some(v)) = self.old_store.get(USER_DATA_KEY) {
if let Ok(local_user_data) = from_str::<Option<UserData>>(&v) { if let Ok(local_user_data) = from_str::<Option<UserData>>(&v) {
@ -122,7 +123,23 @@ impl LocalStore {
} }
} }
let _ = self.old_store.remove_item(USER_DATA_KEY); let _ = self.old_store.remove_item(USER_DATA_KEY);
// 3. Recipes? // 3. Recipes
let store_len = self.old_store.length().unwrap();
let mut key_list = Vec::new();
for i in 0..store_len {
let key = self.old_store.key(i).unwrap().unwrap();
if key.starts_with("recipe:") {
key_list.push(key);
}
}
for k in key_list {
if let Ok(Some(recipe)) = self.old_store.get(&k) {
if let Ok(recipe) = from_str::<RecipeEntry>(&recipe) {
self.set_recipe_entry(&recipe).await;
}
}
let _ = self.old_store.delete(&k);
}
} }
pub async fn store_app_state(&self, state: &AppState) { pub async fn store_app_state(&self, state: &AppState) {
@ -306,11 +323,6 @@ impl LocalStore {
}) })
.await .await
.expect("Failed to get recipes") .expect("Failed to get recipes")
// FIXME(zaphar): Migration from local storage to indexed db
//self.store
// .get(&key)
// .expect(&format!("Failed to get recipe {}", key))
// .map(|entry| from_str(&entry).expect(&format!("Failed to get recipe {}", key)))
} }
/// Sets the set of recipes to the entries passed in. Deletes any recipes not /// Sets the set of recipes to the entries passed in. Deletes any recipes not
@ -331,10 +343,6 @@ impl LocalStore {
}) })
.await .await
.expect("Failed to delete user_data"); .expect("Failed to delete user_data");
// FIXME(zaphar): Migration from local storage to indexed db
//self.store
// .delete(&recipe_key)
// .expect(&format!("Failed to get recipe {}", recipe_key));
} }
for entry in entries { for entry in entries {
let entry = entry.clone(); let entry = entry.clone();
@ -380,13 +388,6 @@ impl LocalStore {
}) })
.await .await
.expect("Failed to store recipe entry"); .expect("Failed to store recipe entry");
// FIXME(zaphar): Migration from local storage to indexed db
//self.store
// .set(
// &recipe_key(entry.recipe_id()),
// &to_string(&entry).expect(&format!("Failed to get recipe {}", entry.recipe_id())),
// )
// .expect(&format!("Failed to store recipe {}", entry.recipe_id()))
} }
/// Delete recipe entry from local storage. /// Delete recipe entry from local storage.
@ -405,10 +406,6 @@ impl LocalStore {
}) })
.await .await
.expect("Failed to delete user_data"); .expect("Failed to delete user_data");
// FIXME(zaphar): Migration from local storage to indexed db
//self.store
// .delete(&recipe_key(recipe_id))
// .expect(&format!("Failed to delete recipe {}", recipe_id))
} }
} }