mirror of
https://github.com/tauri-apps/plugins-workspace.git
synced 2026-05-01 12:08:06 +02:00
8c67d44aef
* refactor(store): more reworks * Enable auto save by default * Store to resource table by default * Remove share store * Clean up * Add close store * Add store function * Add lazy store * Add init to lazy store * refresh cache in example * Add get-or-create-store * Revert "Add get-or-create-store" This reverts commit7ffd769240. * try get first * Docs * Use absolute path for store * more docs * Allow js to use pre-stored (de)serialize functions * Fix js get and close store * Show case how to use pretty json * Update readme * Use store instead of `store_builder` in example * Build * Fix example * More docs for StoreBuilder::build * Add default (de)serialize fn * Use pretty json by default * Use `undefined` for empty value in get * Change files * Differentiate json null from no value for events * Add create or existing * Build * Rename inner store's inset method to set * Update readme * Apply suggestions from code review * Use close instead * Update breaking changes * Return result in resolve_store_path * Change to close_resource and take &self * Clean up * Apply suggestions from code review Co-authored-by: Amr Bashir <amr.bashir2015@gmail.com> * Remove unused pub(crate) * Update change file * Expose resolve_store_path * Remove with_store * Remove StoreInner from pub and expose is_empty * Fix wrong jsdoc param * Update readme * rename createOrExistingStore to createOrLoad * make api consistent with the JS implementation, add examples * fmt * reintroduce "get existing store" behavior for create_or_load * rename createOrLoad to newOrExisting * keep store lock throughout whole new_or_existing_inner * Remove load * Missed if load * Don't make StoreState public * Remove R: Runtime from Builder * rename newOrExisting to load, load to reload * update docs * rename missing reload fn * rename builder fn to build() * fix default permission * Fix description and create_new logic * Clippy * Update docs * Update docs * remove create_store command * remove close_store command since we extend from Resource * Revert "remove close_store command since we extend from Resource" This reverts commit4a29fc8990. * Reapply "remove close_store command since we extend from Resource" This reverts commit70a1830e7d. --------- Co-authored-by: Amr Bashir <amr.bashir2015@gmail.com> Co-authored-by: Lucas Nogueira <lucas@tauri.app>
98 lines
2.1 KiB
Svelte
98 lines
2.1 KiB
Svelte
<script>
|
|
import { LazyStore } from "@tauri-apps/plugin-store";
|
|
import { onMount } from "svelte";
|
|
|
|
export let onMessage;
|
|
|
|
let key;
|
|
let value;
|
|
|
|
let store = new LazyStore("cache.json");
|
|
let cache = {};
|
|
|
|
async function refreshEntries() {
|
|
try {
|
|
const values = await store.entries();
|
|
cache = {};
|
|
for (const [key, value] of values) {
|
|
cache[key] = value;
|
|
}
|
|
} catch (error) {
|
|
onMessage(error);
|
|
}
|
|
}
|
|
|
|
onMount(async () => {
|
|
await refreshEntries();
|
|
});
|
|
|
|
async function write(key, value) {
|
|
try {
|
|
if (value) {
|
|
await store.set(key, value);
|
|
} else {
|
|
await store.delete(key);
|
|
}
|
|
const v = await store.get(key);
|
|
if (v === undefined) {
|
|
delete cache[key];
|
|
cache = cache;
|
|
} else {
|
|
cache[key] = v;
|
|
}
|
|
} catch (error) {
|
|
onMessage(error);
|
|
}
|
|
}
|
|
|
|
async function reset() {
|
|
try {
|
|
await store.reset();
|
|
} catch (error) {
|
|
onMessage(error);
|
|
}
|
|
await refreshEntries();
|
|
}
|
|
|
|
async function close() {
|
|
try {
|
|
await store.close();
|
|
onMessage("Store is now closed, any new operations will error out");
|
|
} catch (error) {
|
|
onMessage(error);
|
|
}
|
|
}
|
|
|
|
function reopen() {
|
|
store = new LazyStore("cache.json");
|
|
onMessage("We made a new `LazyStore` instance, operations will now work");
|
|
}
|
|
</script>
|
|
|
|
<div class="flex flex-col childre:grow gap-1">
|
|
<div class="flex flex-col flex-row-md gap-4">
|
|
<div class="flex items-center gap-1">
|
|
Key:
|
|
<input class="grow input" bind:value={key} />
|
|
</div>
|
|
|
|
<div class="flex items-center gap-1">
|
|
Value:
|
|
<input class="grow input" bind:value />
|
|
</div>
|
|
|
|
<div>
|
|
<button class="btn" on:click={() => write(key, value)}>Write</button>
|
|
<button class="btn" on:click={() => reset()}>Reset</button>
|
|
<button class="btn" on:click={() => close()}>Close</button>
|
|
<button class="btn" on:click={() => reopen()}>Re-open</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div>
|
|
{#each Object.entries(cache) as [k, v]}
|
|
<div>{k} = {v}</div>
|
|
{/each}
|
|
</div>
|
|
</div>
|