From 01a895e2eb91f1db7bdd085d65211f8169b36b8a Mon Sep 17 00:00:00 2001 From: Richard Date: Sat, 25 Jan 2025 11:31:04 -0800 Subject: [PATCH] fix: use `subscribe` for explicit dependencies --- src/charm/src/mapped.luau | 5 ++--- src/charm/src/observe.luau | 6 ++---- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/charm/src/mapped.luau b/src/charm/src/mapped.luau index 1f1e977..fc84d35 100644 --- a/src/charm/src/mapped.luau +++ b/src/charm/src/mapped.luau @@ -1,6 +1,6 @@ local atom = require(script.Parent.atom) -local effect = require(script.Parent.effect) local store = require(script.Parent.store) +local subscribe = require(script.Parent.subscribe) local types = require(script.Parent.types) type Atom = types.Atom type Selector = types.Selector @@ -26,12 +26,11 @@ local function mapped(callback: Selector<{ [K0]: V0 }>, mapper: local prevMappedItems: { [K1]: V1 } = {} local unsubscribe - unsubscribe = effect(function() + unsubscribe = subscribe(callback, function(items) if not mappedAtomRef.current then return unsubscribe() end - local items = callback() local mappedItems = table.clone(store.peek(mappedAtomRef.current)) local mappedKeys = {} diff --git a/src/charm/src/observe.luau b/src/charm/src/observe.luau index 5bb0296..8e50123 100644 --- a/src/charm/src/observe.luau +++ b/src/charm/src/observe.luau @@ -1,4 +1,4 @@ -local effect = require(script.Parent.effect) +local subscribe = require(script.Parent.subscribe) local types = require(script.Parent.types) type Selector = types.Selector @@ -16,9 +16,7 @@ local function noop() end local function observe(callback: Selector<{ [K]: V }>, factory: (value: V, key: K) -> (() -> ())?): () -> () local connections: { [K]: () -> () } = {} - local unsubscribe = effect(function() - local state = callback() - + local unsubscribe = subscribe(callback, function(state) for key, disconnect in next, connections do if state[key] == nil then connections[key] = nil