From 2349517a9621b17094f3393730b3b101ebdf1a30 Mon Sep 17 00:00:00 2001 From: Jeremy Wall Date: Mon, 26 Dec 2022 16:37:51 -0500 Subject: [PATCH] Naming and api ergonomics --- src/lib.rs | 22 +++++++++++----------- src/tests/mod.rs | 16 ++++++++-------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index ab24ac9..458a637 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -15,22 +15,22 @@ use std::marker::PhantomData; use sycamore::prelude::*; -pub trait Dispatcher { - fn apply(&self, msg: Msg, original: &ReadSignal) -> Out; +pub trait MessageMapper { + fn map(&self, msg: Msg, original: &ReadSignal) -> Out; } -pub struct Reducer<'ctx, D, T, Msg> +pub struct Handler<'ctx, D, T, Msg> where - D: Dispatcher, + D: MessageMapper, { signal: &'ctx Signal, dispatcher: &'ctx D, _phantom: PhantomData, } -impl<'ctx, D, T, Msg> Reducer<'ctx, D, T, Msg> +impl<'ctx, D, T, Msg> Handler<'ctx, D, T, Msg> where - D: Dispatcher, + D: MessageMapper, { pub fn new(cx: Scope<'ctx>, initial: T, dispatcher: D) -> &'ctx Self { let signal = create_signal(cx, initial); @@ -45,19 +45,19 @@ where ) } - pub fn dispatch(&self, msg: Msg) { - self.signal.set(self.dispatcher.apply(msg, self.signal)) + fn dispatch(&self, msg: Msg) { + self.signal.set(self.dispatcher.map(msg, self.signal)) } - pub fn signal(&'ctx self) -> &'ctx ReadSignal { + pub fn read_signal(&'ctx self) -> &'ctx ReadSignal { self.signal } - pub fn bind(&'ctx self, cx: Scope<'ctx>, f: F) + pub fn bind_event(&'ctx self, cx: Scope<'ctx>, message_fn: F) where F: Fn() -> Msg + 'ctx, { - create_effect(cx, move || self.dispatch(f())); + create_effect(cx, move || self.dispatch(message_fn())); } } diff --git a/src/tests/mod.rs b/src/tests/mod.rs index 9ed9fb9..df39f3c 100644 --- a/src/tests/mod.rs +++ b/src/tests/mod.rs @@ -26,8 +26,8 @@ pub struct FakeState { pub struct StateMachine(); -impl Dispatcher for StateMachine { - fn apply(&self, msg: Msg, original: &ReadSignal) -> FakeState { +impl MessageMapper for StateMachine { + fn map(&self, msg: Msg, original: &ReadSignal) -> FakeState { match msg { Msg::UpdateOne(val) => { let mut new_state = original.get().as_ref().clone(); @@ -60,23 +60,23 @@ fn test_state_effect_flow() { value_two: 0, }; - let reducer = Reducer::new(cx, state, StateMachine()); + let handler = Handler::new(cx, state, StateMachine()); create_child_scope(cx, |cx| { - let form_val = create_signal(cx, reducer.signal().get_untracked().value_one.clone()); + let form_val = create_signal(cx, handler.read_signal().get_untracked().value_one.clone()); - reducer.bind(cx, || Msg::UpdateOne((*form_val.get()).clone())); + handler.bind_event(cx, || Msg::UpdateOne((*form_val.get()).clone())); form_val.set("bar".to_owned()); - assert_eq!(reducer.signal().get_untracked().value_one, "bar".to_owned()); + assert_eq!(handler.read_signal().get_untracked().value_one, "bar".to_owned()); create_child_scope(cx, |cx| { let form_val = create_signal(cx, 0); - reducer.bind(cx, || Msg::UpdateTwo(*form_val.get())); + handler.bind_event(cx, || Msg::UpdateTwo(*form_val.get())); form_val.set(1); - assert_eq!(reducer.signal().get_untracked().value_two, 1); + assert_eq!(handler.read_signal().get_untracked().value_two, 1); }); }); };