fix(launcher): resolve hydration errors and missing file counts
- Initialized event_session_id to null in store template to prevent Svelte 5 binding errors.\n- Fixed invalid bind expressions in Launcher layout.\n- Corrected view: alt propagation in session list background refresh to ensure file counts are retrieved.\n- Hardened duplicate launch protection with verify_hash enabled by default.\n- Updated SVELTE_DEXIE_GUIDE.md with binding pitfall documentation.
This commit is contained in:
@@ -92,6 +92,35 @@ export function createLiveQueryStore<T>(query: () => T | Promise<T>) {
|
||||
|
||||
The `createLiveQueryStore` function creates a readable store that automatically updates whenever the data in the `friends` table changes. The `$friends` variable in the component will always contain the latest data from the database.
|
||||
|
||||
## Svelte 5 Binding Pitfalls
|
||||
|
||||
### 1. `props_invalid_value` (The "Expression Binding" Error)
|
||||
Svelte 5's `bind:` directive is more restrictive than previous versions. You can only bind to a simple **Identifier** or **MemberExpression**.
|
||||
|
||||
**❌ Invalid Pattern (Causes Compile Error):**
|
||||
Attempting to normalize a value *inside* the binding will fail.
|
||||
```svelte
|
||||
<!-- Error: Can only bind to an Identifier or MemberExpression -->
|
||||
<Launcher_menu bind:slct__event_session_id={$events_slct.event_session_id || null} />
|
||||
```
|
||||
|
||||
**✅ Correct Pattern:**
|
||||
Ensure the source value is already normalized before binding, or use a reactive effect to handle the fallback.
|
||||
```typescript
|
||||
// Normalize in an effect or derivation
|
||||
$effect(() => {
|
||||
if ($events_slct.event_session_id === undefined) {
|
||||
$events_slct.event_session_id = null;
|
||||
}
|
||||
});
|
||||
```
|
||||
```svelte
|
||||
<!-- Bind directly to the normalized property -->
|
||||
<Launcher_menu bind:slct__event_session_id={$events_slct.event_session_id} />
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Safe Data Processing for IndexedDB Sorting
|
||||
|
||||
When preparing data for IndexedDB, especially when creating composite sort keys, it is critical to handle `null` or `undefined` values safely to prevent runtime crashes that can interrupt the data synchronization process.
|
||||
|
||||
Reference in New Issue
Block a user