|  | 
| 6 | 6 | const convex = useConvexClient(); | 
| 7 | 7 | const serverNumbers = useQuery(api.numbers.get, {}); | 
| 8 | 8 | 
 | 
| 9 |  | -let numbers = $state({ a: 0, b: 0, c: 0 }); | 
|  | 9 | +let numbers = $state(serverNumbers.isLoading ? {} : { a: serverNumbers.a, b: serverNumbers.b, c: serverNumbers.c }); | 
| 10 | 10 | let pendingMutations = $state(0); | 
| 11 | 11 | let lastMutationPromise: Promise<any> | null = $state(null); | 
| 12 | 12 | let hasUnsentChanges = $state(false); // Track if we have changes waiting in debounce | 
|  | 
| 15 | 15 | $effect(() => { | 
| 16 | 16 |  if (!serverNumbers.isLoading && serverNumbers.data &&  | 
| 17 | 17 | pendingMutations === 0 && !hasUnsentChanges) { | 
| 18 |  | -console.log('Received data from server'); | 
|  | 18 | +console.log('Received data from server:', { | 
|  | 19 | + a: serverNumbers.data.a, | 
|  | 20 | + b: serverNumbers.data.b, | 
|  | 21 | + c: serverNumbers.data.c, | 
|  | 22 | +}); | 
| 19 | 23 | numbers.a = serverNumbers.data.a; | 
| 20 | 24 | numbers.b = serverNumbers.data.b; | 
| 21 | 25 | numbers.c = serverNumbers.data.c; | 
|  | 
| 29 | 33 |  pendingMutations++; | 
| 30 | 34 |  hasUnsentChanges = false; | 
| 31 | 35 | 
 | 
| 32 |  | - console.log('Updating server...', pendingMutations, 'mutations pending'); | 
|  | 36 | + console.log('Updating server with', numbers, pendingMutations, 'mutations pending'); | 
| 33 | 37 |  const currentMutation = convex.mutation(api.numbers.update, { | 
| 34 | 38 | a: numbers.a, | 
| 35 | 39 | b: numbers.b, | 
|  | 
| 59 | 63 | // Track changes immediately but debounce the actual mutation | 
| 60 | 64 | let updateTimeout: number | undefined; | 
| 61 | 65 | $effect(() => { | 
|  | 66 | + if (serverNumbers.isLoading) return; | 
|  | 67 | +
 | 
| 62 | 68 |  // reference values so this is reactive on them | 
| 63 | 69 |  const currentValues = { | 
| 64 | 70 | a: numbers.a, | 
|  | 
0 commit comments