-
-
Notifications
You must be signed in to change notification settings - Fork 105
Expand file tree
/
Copy pathuse_local_storage.rs
More file actions
43 lines (41 loc) · 1.83 KB
/
use_local_storage.rs
File metadata and controls
43 lines (41 loc) · 1.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
use super::{StorageType, UseStorageOptions, use_storage_with_options};
use codee::{Decoder, Encoder};
use leptos::prelude::*;
use leptos::reactive::wrappers::read::Signal;
#[allow(rustdoc::bare_urls)]
/// Reactive [LocalStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage).
///
/// LocalStorage stores data in the browser with no expiration time. Access is given to all pages
/// from the same origin (e.g., all pages from "https://example.com" share the same origin).
/// While data doesn't expire the user can view, modify and delete all data stored.
/// Browsers allow 5MB of data to be stored.
///
/// This is in contrast to [`use_session_storage`](https://leptos-use.rs/storage/use_session_storage.html) which clears data when the page session ends and is not shared.
///
/// ## Usage
///
/// See [`use_storage`](https://leptos-use.rs/storage/use_storage.html) for more details on how to use.
pub fn use_local_storage<T, C>(
key: impl Into<Signal<String>>,
) -> (Signal<T>, WriteSignal<T>, impl Fn() + Clone + Send + Sync)
where
T: Clone + Default + PartialEq + Send + Sync + 'static,
C: Encoder<T, Encoded = String> + Decoder<T, Encoded = str>,
{
use_storage_with_options::<T, C>(
StorageType::Local,
key,
UseStorageOptions::<T, <C as Encoder<T>>::Error, <C as Decoder<T>>::Error>::default(),
)
}
/// Accepts [`UseStorageOptions`]. See [`use_local_storage`] for details.
pub fn use_local_storage_with_options<T, C>(
key: impl Into<Signal<String>>,
options: UseStorageOptions<T, <C as Encoder<T>>::Error, <C as Decoder<T>>::Error>,
) -> (Signal<T>, WriteSignal<T>, impl Fn() + Clone + Send + Sync)
where
T: Clone + PartialEq + Send + Sync,
C: Encoder<T, Encoded = String> + Decoder<T, Encoded = str>,
{
use_storage_with_options::<T, C>(StorageType::Local, key, options)
}