Files
ziemniak/src/App.svelte

49 lines
1.1 KiB
Svelte
Raw Normal View History

2022-07-27 12:58:22 +02:00
<script type="ts">
import { onDestroy, onMount } from "svelte";
import type { UnlistenFn } from "@tauri-apps/api/event";
import { invoke } from "@tauri-apps/api";
import { listen } from "@tauri-apps/api/event";
2022-07-26 23:36:24 +02:00
2022-07-27 12:58:22 +02:00
let seconds = 5;
let timer_tick_unlisten: Promise<UnlistenFn> | null = null;
let timer_done_unlisten: Promise<UnlistenFn> | null = null;
type Timer = {
id: string;
elapsed: {
secs: number;
nsecs: number;
};
};
2022-07-26 23:36:24 +02:00
2022-07-27 12:58:22 +02:00
onMount(() => {
timer_tick_unlisten = listen<Timer>("timer-tick", (event) => {
console.log("Tick!", event.payload.id, event.payload.elapsed);
});
2022-07-26 23:36:24 +02:00
2022-07-27 12:58:22 +02:00
timer_done_unlisten = listen<Timer>("timer-done", (event) => {
console.log("Done!", event.payload.id);
});
});
2022-07-26 23:36:24 +02:00
2022-07-27 12:58:22 +02:00
onDestroy(() => {
timer_tick_unlisten?.then((ttu) => ttu());
timer_done_unlisten?.then((tdu) => tdu());
});
function start_timer() {
invoke("start_timer", {
duration: { secs: seconds, nanos: 0 },
message: "Hi!",
});
2022-07-26 23:36:24 +02:00
}
2022-07-26 05:03:28 +02:00
</script>
<main>
2022-07-26 05:48:06 +02:00
<label>
Fire after
<input type="number" bind:value={seconds} />
</label>
2022-07-27 12:58:22 +02:00
<button on:click={start_timer}>Fire!</button>
2022-07-26 05:03:28 +02:00
</main>