brought back use_storage

This commit is contained in:
Maccesch 2023-11-12 22:50:59 +00:00
parent e8c6540369
commit b26459986e
8 changed files with 26 additions and 13 deletions

View file

@ -5,7 +5,7 @@ use super::Codec;
/// ## Example
/// ```
/// # use leptos::*;
/// # use leptos_use::storage::{StorageType, use_local_storage, use_session_storage, use_storage_with_options, UseStorageOptions, JsonCodec};
/// # use leptos_use::storage::{StorageType, use_local_storage, use_session_storage, use_storage, UseStorageOptions, JsonCodec};
/// # use serde::{Deserialize, Serialize};
/// #
/// # pub fn Demo() -> impl IntoView {
@ -34,7 +34,7 @@ use super::Codec;
///
/// ```
/// # use leptos::*;
/// # use leptos_use::storage::{StorageType, use_local_storage, use_session_storage, use_storage_with_options, UseStorageOptions, Codec, JsonCodec};
/// # use leptos_use::storage::{StorageType, use_local_storage, use_session_storage, use_storage, UseStorageOptions, Codec, JsonCodec};
/// # use serde::{Deserialize, Serialize};
/// #
/// # pub fn Demo() -> impl IntoView {
@ -75,7 +75,7 @@ use super::Codec;
///
/// ```
/// # use leptos::*;
/// # use leptos_use::storage::{StorageType, use_local_storage, use_session_storage, use_storage_with_options, UseStorageOptions, Codec, JsonCodec};
/// # use leptos_use::storage::{StorageType, use_local_storage, use_session_storage, use_storage, UseStorageOptions, Codec, JsonCodec};
/// # use serde::{Deserialize, Serialize};
/// # use serde_json::json;
/// #

View file

@ -11,7 +11,7 @@ use thiserror::Error;
/// ## Example
/// ```
/// # use leptos::*;
/// # use leptos_use::storage::{StorageType, use_local_storage, use_session_storage, use_storage_with_options, UseStorageOptions, ProstCodec};
/// # use leptos_use::storage::{StorageType, use_local_storage, use_session_storage, use_storage, UseStorageOptions, ProstCodec};
/// #
/// # pub fn Demo() -> impl IntoView {
/// // Primitive types:

View file

@ -8,7 +8,7 @@ use std::str::FromStr;
/// ## Example
/// ```
/// # use leptos::*;
/// # use leptos_use::storage::{StorageType, use_local_storage, use_session_storage, use_storage_with_options, UseStorageOptions, StringCodec};
/// # use leptos_use::storage::{StorageType, use_local_storage, use_session_storage, use_storage, UseStorageOptions, StringCodec};
/// #
/// # pub fn Demo() -> impl IntoView {
/// let (get, set, remove) = use_local_storage::<i32, StringCodec>("my-key");

View file

@ -5,7 +5,7 @@ mod codec_prost;
mod codec_string;
mod use_local_storage;
mod use_session_storage;
mod use_storage_with_options;
mod use_storage;
pub use crate::core::StorageType;
#[cfg(feature = "serde")]
@ -15,4 +15,4 @@ pub use codec_prost::*;
pub use codec_string::*;
pub use use_local_storage::*;
pub use use_session_storage::*;
pub use use_storage_with_options::*;
pub use use_storage::*;

View file

@ -1,4 +1,4 @@
use super::{use_storage_with_options, Codec, StorageType, UseStorageOptions};
use super::{use_storage, Codec, StorageType, UseStorageOptions};
use leptos::signal_prelude::*;
/// Reactive [LocalStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage).
@ -8,7 +8,7 @@ use leptos::signal_prelude::*;
/// This is contrast to [`use_session_storage`] which clears data when the page session ends and is not shared.
///
/// ## Usage
/// See [`use_storage_with_options`] for more details on how to use.
/// See [`use_storage`] for more details on how to use.
pub fn use_local_storage<T, C>(
key: impl AsRef<str>,
) -> (Signal<T>, WriteSignal<T>, impl Fn() + Clone)

View file

@ -1,4 +1,4 @@
use super::{use_storage_with_options, Codec, StorageType, UseStorageOptions};
use super::{use_storage, Codec, StorageType, UseStorageOptions};
use leptos::signal_prelude::*;
/// Reactive [SessionStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage).
@ -8,7 +8,7 @@ use leptos::signal_prelude::*;
/// Use [`use_local_storage`] to store data that is shared amongst all pages with the same origin and persists between page sessions.
///
/// ## Usage
/// See [`use_storage_with_options`] for more details on how to use.
/// See [`use_storage`] for more details on how to use.
pub fn use_session_storage<T, C>(
key: impl AsRef<str>,
) -> (Signal<T>, WriteSignal<T>, impl Fn() + Clone)

View file

@ -29,7 +29,7 @@ const INTERNAL_STORAGE_EVENT: &str = "leptos-use-storage";
///
/// ```
/// # use leptos::*;
/// # use leptos_use::storage::{StorageType, use_local_storage, use_session_storage, use_storage_with_options, UseStorageOptions, StringCodec, JsonCodec, ProstCodec};
/// # use leptos_use::storage::{StorageType, use_local_storage, use_session_storage, use_storage, UseStorageOptions, StringCodec, JsonCodec, ProstCodec};
/// # use serde::{Deserialize, Serialize};
/// #
/// # pub fn Demo() -> impl IntoView {
@ -71,6 +71,19 @@ const INTERNAL_STORAGE_EVENT: &str = "leptos-use-storage";
/// }
/// }
/// ```
#[inline(always)]
pub fn use_storage<T, C>(
storage_type: StorageType,
key: impl AsRef<str>,
) -> (Signal<T>, WriteSignal<T>, impl Fn() + Clone)
where
T: Clone + PartialEq,
C: Codec<T>,
{
use_storage_with_options(storage_type, key, UseStorageOptions::default())
}
/// Version of [`use_storage`] that accepts [`UseStorageOptions`].
pub fn use_storage_with_options<T, C>(
storage_type: StorageType,
key: impl AsRef<str>,

View file

@ -1,5 +1,5 @@
use crate::core::{ElementMaybeSignal, MaybeRwSignal};
use crate::storage::{use_storage_with_options, StringCodec, UseStorageOptions};
use crate::storage::{use_storage, StringCodec, UseStorageOptions};
use std::fmt::{Display, Formatter};
use std::str::FromStr;