rustolio_utils/web_sys/
storage.rs1use crate::error::{FromCustomError, FromJsValue};
2
3#[derive(Debug, Clone, PartialEq, Eq)]
4pub struct LocalStorage(web_sys::Storage);
5
6impl LocalStorage {
7 pub fn global() -> crate::Result<Self> {
8 Ok(Self(
9 super::globals::window()?
10 .local_storage()
11 .context("No global LocalStorage")?
12 .context("No global LocalStorage")?,
13 ))
14 }
15
16 #[track_caller]
17 pub fn length(&self) -> crate::Result<u32> {
18 self.0.length().context("Failed to get length")
19 }
20 #[track_caller]
21 pub fn clear(&self) -> crate::Result<()> {
22 self.0.clear().context("Failed to exec clear")
23 }
24 #[track_caller]
25 pub fn get(&self, key: &str) -> crate::Result<Option<String>> {
26 self.0.get(key).context("Failed to get item")
27 }
28 #[track_caller]
29 pub fn set(&self, key: &str, value: &str) -> crate::Result<()> {
30 self.0.set(key, value).context("Failed to set item")
31 }
32 #[track_caller]
33 pub fn delete(&self, key: &str) -> crate::Result<()> {
34 self.0.delete(key).context("Failed to delete item")
35 }
36 #[track_caller]
37 pub fn key(&self, key: u32) -> crate::Result<Option<String>> {
38 self.0.key(key).context("Failed to get key")
39 }
40}