fix: use writable \$derived for search inputs, remove unnecessary \$state wrap
- Replace \$state + \$effect pattern with writable \$derived (Svelte 5.25+) for all searchValue instances across list pages — cleaner and lint-compliant - Remove now-unused untrack imports from those files - Drop \$state() wrapper around SvelteMap in device-mapping-dialog (SvelteMap is already reactive) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,4 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { untrack } from "svelte";
|
|
||||||
import { goto, invalidateAll } from "$app/navigation";
|
import { goto, invalidateAll } from "$app/navigation";
|
||||||
import { page } from "$app/state";
|
import { page } from "$app/state";
|
||||||
import { SvelteURLSearchParams } from "svelte/reactivity";
|
import { SvelteURLSearchParams } from "svelte/reactivity";
|
||||||
@@ -21,8 +20,7 @@
|
|||||||
let deleteTarget: Article | null = $state(null);
|
let deleteTarget: Article | null = $state(null);
|
||||||
let deleteOpen = $state(false);
|
let deleteOpen = $state(false);
|
||||||
let deleting = $state(false);
|
let deleting = $state(false);
|
||||||
let searchValue = $state(untrack(() => data.search ?? ""));
|
let searchValue = $derived(data.search ?? "");
|
||||||
$effect(() => { searchValue = data.search ?? ""; });
|
|
||||||
let searchTimeout: ReturnType<typeof setTimeout>;
|
let searchTimeout: ReturnType<typeof setTimeout>;
|
||||||
|
|
||||||
function debounceSearch(value: string) {
|
function debounceSearch(value: string) {
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { untrack } from "svelte";
|
|
||||||
import { goto, invalidateAll } from "$app/navigation";
|
import { goto, invalidateAll } from "$app/navigation";
|
||||||
import { page } from "$app/state";
|
import { page } from "$app/state";
|
||||||
import { SvelteURLSearchParams } from "svelte/reactivity";
|
import { SvelteURLSearchParams } from "svelte/reactivity";
|
||||||
@@ -18,8 +17,7 @@
|
|||||||
let deleteTarget: { id: number; comment: string } | null = $state(null);
|
let deleteTarget: { id: number; comment: string } | null = $state(null);
|
||||||
let deleteOpen = $state(false);
|
let deleteOpen = $state(false);
|
||||||
let deleting = $state(false);
|
let deleting = $state(false);
|
||||||
let searchValue = $state(untrack(() => data.search ?? ""));
|
let searchValue = $derived(data.search ?? "");
|
||||||
$effect(() => { searchValue = data.search ?? ""; });
|
|
||||||
let searchTimeout: ReturnType<typeof setTimeout>;
|
let searchTimeout: ReturnType<typeof setTimeout>;
|
||||||
|
|
||||||
function debounceSearch(value: string) {
|
function debounceSearch(value: string) {
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { untrack } from "svelte";
|
|
||||||
import { goto, invalidateAll } from "$app/navigation";
|
import { goto, invalidateAll } from "$app/navigation";
|
||||||
import { page } from "$app/state";
|
import { page } from "$app/state";
|
||||||
import { SvelteURLSearchParams } from "svelte/reactivity";
|
import { SvelteURLSearchParams } from "svelte/reactivity";
|
||||||
@@ -19,8 +18,7 @@
|
|||||||
let deleteTarget: Recording | null = $state(null);
|
let deleteTarget: Recording | null = $state(null);
|
||||||
let deleteOpen = $state(false);
|
let deleteOpen = $state(false);
|
||||||
let deleting = $state(false);
|
let deleting = $state(false);
|
||||||
let searchValue = $state(untrack(() => data.search ?? ""));
|
let searchValue = $derived(data.search ?? "");
|
||||||
$effect(() => { searchValue = data.search ?? ""; });
|
|
||||||
let searchTimeout: ReturnType<typeof setTimeout>;
|
let searchTimeout: ReturnType<typeof setTimeout>;
|
||||||
|
|
||||||
function debounceSearch(value: string) {
|
function debounceSearch(value: string) {
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { untrack } from "svelte";
|
|
||||||
import { goto, invalidateAll } from "$app/navigation";
|
import { goto, invalidateAll } from "$app/navigation";
|
||||||
import { page } from "$app/state";
|
import { page } from "$app/state";
|
||||||
import { SvelteURLSearchParams } from "svelte/reactivity";
|
import { SvelteURLSearchParams } from "svelte/reactivity";
|
||||||
@@ -16,8 +15,7 @@
|
|||||||
|
|
||||||
const { data } = $props();
|
const { data } = $props();
|
||||||
|
|
||||||
let searchValue = $state(untrack(() => data.search ?? ""));
|
let searchValue = $derived(data.search ?? "");
|
||||||
$effect(() => { searchValue = data.search ?? ""; });
|
|
||||||
let searchTimeout: ReturnType<typeof setTimeout>;
|
let searchTimeout: ReturnType<typeof setTimeout>;
|
||||||
let deleteTarget: User | null = $state(null);
|
let deleteTarget: User | null = $state(null);
|
||||||
let deleteOpen = $state(false);
|
let deleteOpen = $state(false);
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { untrack } from "svelte";
|
|
||||||
import { goto, invalidateAll } from "$app/navigation";
|
import { goto, invalidateAll } from "$app/navigation";
|
||||||
import { page } from "$app/state";
|
import { page } from "$app/state";
|
||||||
import { SvelteURLSearchParams } from "svelte/reactivity";
|
import { SvelteURLSearchParams } from "svelte/reactivity";
|
||||||
@@ -18,8 +17,7 @@
|
|||||||
let deleteTarget: Video | null = $state(null);
|
let deleteTarget: Video | null = $state(null);
|
||||||
let deleteOpen = $state(false);
|
let deleteOpen = $state(false);
|
||||||
let deleting = $state(false);
|
let deleting = $state(false);
|
||||||
let searchValue = $state(untrack(() => data.search ?? ""));
|
let searchValue = $derived(data.search ?? "");
|
||||||
$effect(() => { searchValue = data.search ?? ""; });
|
|
||||||
let searchTimeout: ReturnType<typeof setTimeout>;
|
let searchTimeout: ReturnType<typeof setTimeout>;
|
||||||
|
|
||||||
function debounceSearch(value: string) {
|
function debounceSearch(value: string) {
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { untrack } from "svelte";
|
|
||||||
import { _ } from "svelte-i18n";
|
import { _ } from "svelte-i18n";
|
||||||
import { goto } from "$app/navigation";
|
import { goto } from "$app/navigation";
|
||||||
import { page } from "$app/state";
|
import { page } from "$app/state";
|
||||||
@@ -18,8 +17,7 @@
|
|||||||
const timeAgo = new TimeAgo("en");
|
const timeAgo = new TimeAgo("en");
|
||||||
const { data } = $props();
|
const { data } = $props();
|
||||||
|
|
||||||
let searchValue = $state(untrack(() => data.search ?? ""));
|
let searchValue = $derived(data.search ?? "");
|
||||||
$effect(() => { searchValue = data.search ?? ""; });
|
|
||||||
let searchTimeout: ReturnType<typeof setTimeout>;
|
let searchTimeout: ReturnType<typeof setTimeout>;
|
||||||
|
|
||||||
const featuredArticle = $derived(
|
const featuredArticle = $derived(
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { untrack } from "svelte";
|
|
||||||
import { _ } from "svelte-i18n";
|
import { _ } from "svelte-i18n";
|
||||||
import { goto } from "$app/navigation";
|
import { goto } from "$app/navigation";
|
||||||
import { page } from "$app/state";
|
import { page } from "$app/state";
|
||||||
@@ -15,8 +14,7 @@
|
|||||||
|
|
||||||
const { data } = $props();
|
const { data } = $props();
|
||||||
|
|
||||||
let searchValue = $state(untrack(() => data.search ?? ""));
|
let searchValue = $derived(data.search ?? "");
|
||||||
$effect(() => { searchValue = data.search ?? ""; });
|
|
||||||
let searchTimeout: ReturnType<typeof setTimeout>;
|
let searchTimeout: ReturnType<typeof setTimeout>;
|
||||||
|
|
||||||
function debounceSearch(value: string) {
|
function debounceSearch(value: string) {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
let { open, recordedDevices, connectedDevices, onConfirm, onCancel }: Props = $props();
|
let { open, recordedDevices, connectedDevices, onConfirm, onCancel }: Props = $props();
|
||||||
|
|
||||||
// Device mappings: recorded device name -> connected device
|
// Device mappings: recorded device name -> connected device
|
||||||
let mappings = $state(new SvelteMap<string, BluetoothDevice>());
|
let mappings = new SvelteMap<string, BluetoothDevice>();
|
||||||
|
|
||||||
// Check if a connected device is compatible with a recorded device
|
// Check if a connected device is compatible with a recorded device
|
||||||
function isCompatible(recordedDevice: DeviceInfo, connectedDevice: BluetoothDevice): boolean {
|
function isCompatible(recordedDevice: DeviceInfo, connectedDevice: BluetoothDevice): boolean {
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { untrack } from "svelte";
|
|
||||||
import { _ } from "svelte-i18n";
|
import { _ } from "svelte-i18n";
|
||||||
import { goto } from "$app/navigation";
|
import { goto } from "$app/navigation";
|
||||||
import { page } from "$app/state";
|
import { page } from "$app/state";
|
||||||
@@ -18,10 +17,7 @@
|
|||||||
const timeAgo = new TimeAgo("en");
|
const timeAgo = new TimeAgo("en");
|
||||||
const { data } = $props();
|
const { data } = $props();
|
||||||
|
|
||||||
let searchValue = $state(untrack(() => data.search ?? ""));
|
let searchValue = $derived(data.search ?? "");
|
||||||
$effect(() => {
|
|
||||||
searchValue = data.search ?? "";
|
|
||||||
});
|
|
||||||
let searchTimeout: ReturnType<typeof setTimeout>;
|
let searchTimeout: ReturnType<typeof setTimeout>;
|
||||||
|
|
||||||
function debounceSearch(value: string) {
|
function debounceSearch(value: string) {
|
||||||
|
|||||||
Reference in New Issue
Block a user