From a53683d59e29eea1acf5dad71c61869bfe10c15a Mon Sep 17 00:00:00 2001 From: littensy <56808540+littensy@users.noreply.github.com> Date: Thu, 8 May 2025 00:12:51 -0700 Subject: [PATCH] refactor: use setCurrentSub instead of pauseTracking --- benchmarks/mapped.luau | 4 ++-- pkgs/charm/src/listen.luau | 4 ++-- pkgs/charm/src/mapped.luau | 4 ++-- pkgs/charm/src/observe.luau | 4 ++-- pkgs/charm/src/subscribe.luau | 4 ++-- pkgs/charm/src/untracked.luau | 4 ++-- pkgs/charm/tests/signals/effect.spec.luau | 7 +++---- pkgs/charm/tests/signals/issue_48.spec.luau | 7 +++---- pkgs/charm/tests/signals/untrack.spec.luau | 7 +++---- 9 files changed, 21 insertions(+), 24 deletions(-) diff --git a/benchmarks/mapped.luau b/benchmarks/mapped.luau index 05358c1..8e72c8f 100644 --- a/benchmarks/mapped.luau +++ b/benchmarks/mapped.luau @@ -25,9 +25,9 @@ local function simpleMapped(source: () -> { Entry }, mapper: (Entry, number) -> local nextState = {} for index, value in state do - local prevSub = setCurrentSub(nil) + local currentSub = setCurrentSub(nil) local success, valueOut, keyOut = pcall(mapper, value, index) - setCurrentSub(prevSub) + setCurrentSub(currentSub) if success then nextState[keyOut] = valueOut diff --git a/pkgs/charm/src/listen.luau b/pkgs/charm/src/listen.luau index 00c2141..c72b061 100644 --- a/pkgs/charm/src/listen.luau +++ b/pkgs/charm/src/listen.luau @@ -16,9 +16,9 @@ local function listen(selector: () -> T, listener: (state: T, previous: T?, d current = selector() if current ~= previous then - local prevSub = setCurrentSub(nil) + local currentSub = setCurrentSub(nil) local success, result: unknown = pcall(listener, current, previous, dispose) - setCurrentSub(prevSub) + setCurrentSub(currentSub) if not success then error(`listen() encountered an error: {result}`) diff --git a/pkgs/charm/src/mapped.luau b/pkgs/charm/src/mapped.luau index ae4dcff..247ae31 100644 --- a/pkgs/charm/src/mapped.luau +++ b/pkgs/charm/src/mapped.luau @@ -16,9 +16,9 @@ local function mapped(selector: () -> { [KI]: VI }, mapper: (ite local keyCache: { [KI]: KO } = {} local function map(value: VI, key: KI): (VO, KO) - local prevSub = setCurrentSub(nil) + local currentSub = setCurrentSub(nil) local success, valueOut, keyOut = pcall(mapper, value, key) - setCurrentSub(prevSub) + setCurrentSub(currentSub) if not success then error(`mapped() transform function failed: {valueOut}`) diff --git a/pkgs/charm/src/observe.luau b/pkgs/charm/src/observe.luau index a64c9b3..828ea0f 100644 --- a/pkgs/charm/src/observe.luau +++ b/pkgs/charm/src/observe.luau @@ -46,9 +46,9 @@ local function observe(selector: () -> { [K]: V }, observer: (item: V, key currentItems = selector() if currentItems ~= previousItems then - local prevSub = setCurrentSub(nil) + local currentSub = setCurrentSub(nil) local success, result: unknown = pcall(updateScopes, currentItems, previousItems) - setCurrentSub(prevSub) + setCurrentSub(currentSub) if not success then error(`observe() encountered an error: {result}`, 2) diff --git a/pkgs/charm/src/subscribe.luau b/pkgs/charm/src/subscribe.luau index 48a2300..01c4a98 100644 --- a/pkgs/charm/src/subscribe.luau +++ b/pkgs/charm/src/subscribe.luau @@ -14,9 +14,9 @@ local function subscribe(selector: () -> T, listener: (state: T, lastState: T if mounted then mounted = false elseif current ~= previous then - local prevSub = setCurrentSub(nil) + local currentSub = setCurrentSub(nil) local success, result: unknown = pcall(listener, current, previous) - setCurrentSub(prevSub) + setCurrentSub(currentSub) if not success then error(`subscribe() encountered an error: {result}`) diff --git a/pkgs/charm/src/untracked.luau b/pkgs/charm/src/untracked.luau index d897e6b..ac77e85 100644 --- a/pkgs/charm/src/untracked.luau +++ b/pkgs/charm/src/untracked.luau @@ -3,9 +3,9 @@ local signals = require("./signals") local setCurrentSub = signals.setCurrentSub local function untracked(callback: ((Args...) -> T) | (Args...) -> (), ...: Args...): T - local prevSub = setCurrentSub(nil) + local currentSub = setCurrentSub(nil) local success, result = pcall(callback, ...) - setCurrentSub(prevSub) + setCurrentSub(currentSub) if not success then error(result) diff --git a/pkgs/charm/tests/signals/effect.spec.luau b/pkgs/charm/tests/signals/effect.spec.luau index 76e2fda..a0d70a2 100644 --- a/pkgs/charm/tests/signals/effect.spec.luau +++ b/pkgs/charm/tests/signals/effect.spec.luau @@ -5,8 +5,7 @@ local computed = signals.computed local effect = signals.effect local effectScope = signals.effectScope local endBatch = signals.endBatch -local pauseTracking = signals.pauseTracking -local resumeTracking = signals.resumeTracking +local setCurrentSub = signals.setCurrentSub local onEffectCleanup = signals.onEffectCleanup local signal = signals.signal local startBatch = signals.startBatch @@ -203,9 +202,9 @@ test("should duplicate subscribers do not affect the notify order", function() effect(function() table.insert(order, "a") - pauseTracking() + local currentSub = setCurrentSub(nil) local isOne = src2() == 1 - resumeTracking() + setCurrentSub(currentSub) if isOne then src1() end diff --git a/pkgs/charm/tests/signals/issue_48.spec.luau b/pkgs/charm/tests/signals/issue_48.spec.luau index 122a44c..5089a84 100644 --- a/pkgs/charm/tests/signals/issue_48.spec.luau +++ b/pkgs/charm/tests/signals/issue_48.spec.luau @@ -3,8 +3,7 @@ local suite = require("@tests/suite") local computed = signals.computed local effect = signals.effect -local pauseTracking = signals.pauseTracking -local resumeTracking = signals.resumeTracking +local setCurrentSub = signals.setCurrentSub local signal = signals.signal local test = suite.test @@ -17,9 +16,9 @@ type ReactionOptions = { } local function untracked(callback: () -> T): T - pauseTracking() + local currentSub = setCurrentSub(nil) local success, result = pcall(callback) - resumeTracking() + setCurrentSub(currentSub) if not success then error(result) end diff --git a/pkgs/charm/tests/signals/untrack.spec.luau b/pkgs/charm/tests/signals/untrack.spec.luau index c08c3e1..56a28ae 100644 --- a/pkgs/charm/tests/signals/untrack.spec.luau +++ b/pkgs/charm/tests/signals/untrack.spec.luau @@ -2,17 +2,16 @@ local signals = require("../../src/signals") local suite = require("@tests/suite") local computed = signals.computed -local pauseTracking = signals.pauseTracking -local resumeTracking = signals.resumeTracking +local setCurrentSub = signals.setCurrentSub local signal = signals.signal local test = suite.test test("should pause tracking", function() local src, setSrc = signal(0) local c = computed(function() - pauseTracking() + local currentSub = setCurrentSub(nil) local value = src() - resumeTracking() + setCurrentSub(currentSub) return value end) assert(c() == 0, "should not track src")