Skip to content

Commit 4af32ec

Browse files
authored
Fix create deep signal (#781)
2 parents 8e0161a + 9914bfc commit 4af32ec

File tree

3 files changed

+29
-1
lines changed

3 files changed

+29
-1
lines changed

.changeset/small-coats-obey.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@solid-primitives/resource": patch
3+
---
4+
5+
Fix setter input value in `createDeepSignal`.

packages/resource/src/index.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,8 @@ export function createDeepSignal<T>(v?: T): Signal<T> {
298298
return [
299299
() => store[0],
300300
(update: T) => (
301-
setStore(0, reconcile(typeof update === "function" ? update(unwrap(store[0])) : v)), store[0]
301+
setStore(0, reconcile(typeof update === "function" ? update(unwrap(store[0])) : update)),
302+
store[0]
302303
),
303304
] as Signal<T>;
304305
}

packages/resource/test/index.test.ts

+22
Original file line numberDiff line numberDiff line change
@@ -419,4 +419,26 @@ describe("createDeepSignal", () => {
419419
return run + 1;
420420
});
421421
}));
422+
test("mutates the resource with callback", () =>
423+
testEffect(done => {
424+
const [data, { mutate }] = createResource(() => ({ counter: 1 }), {
425+
storage: createDeepSignal,
426+
});
427+
mutate(() => ({ counter: 2 }));
428+
createEffect(() => {
429+
expect(data()?.counter).toBe(2);
430+
done();
431+
});
432+
}));
433+
test("mutates the resource with plain object", () =>
434+
testEffect(done => {
435+
const [data, { mutate }] = createResource(() => ({ counter: 1 }), {
436+
storage: createDeepSignal,
437+
});
438+
mutate({ counter: 2 });
439+
createEffect(() => {
440+
expect(data()?.counter).toBe(2);
441+
done();
442+
});
443+
}));
422444
});

0 commit comments

Comments
 (0)