Save local storage at every change and not just on shutdown

This commit is contained in:
Fabrice Desré 2018-05-20 12:15:02 -07:00
parent cb764be7cd
commit 20266fa103

View file

@ -67,21 +67,22 @@ impl StorageManager {
self.keys(sender, url, storage_type) self.keys(sender, url, storage_type)
} }
StorageThreadMsg::SetItem(sender, url, storage_type, name, value) => { StorageThreadMsg::SetItem(sender, url, storage_type, name, value) => {
self.set_item(sender, url, storage_type, name, value) self.set_item(sender, url, storage_type, name, value);
self.save_state()
} }
StorageThreadMsg::GetItem(sender, url, storage_type, name) => { StorageThreadMsg::GetItem(sender, url, storage_type, name) => {
self.request_item(sender, url, storage_type, name) self.request_item(sender, url, storage_type, name)
} }
StorageThreadMsg::RemoveItem(sender, url, storage_type, name) => { StorageThreadMsg::RemoveItem(sender, url, storage_type, name) => {
self.remove_item(sender, url, storage_type, name) self.remove_item(sender, url, storage_type, name);
self.save_state()
} }
StorageThreadMsg::Clear(sender, url, storage_type) => { StorageThreadMsg::Clear(sender, url, storage_type) => {
self.clear(sender, url, storage_type) self.clear(sender, url, storage_type);
self.save_state()
} }
StorageThreadMsg::Exit(sender) => { StorageThreadMsg::Exit(sender) => {
if let Some(ref config_dir) = self.config_dir { // Nothing to do since we save localstorage set eagerly.
resource_thread::write_json_to_file(&self.local_data, config_dir, "local_data.json");
}
let _ = sender.send(()); let _ = sender.send(());
break break
} }
@ -89,6 +90,12 @@ impl StorageManager {
} }
} }
fn save_state(&self) {
if let Some(ref config_dir) = self.config_dir {
resource_thread::write_json_to_file(&self.local_data, config_dir, "local_data.json");
}
}
fn select_data(&self, storage_type: StorageType) fn select_data(&self, storage_type: StorageType)
-> &HashMap<String, (usize, BTreeMap<String, String>)> { -> &HashMap<String, (usize, BTreeMap<String, String>)> {
match storage_type { match storage_type {