From 28d861e2df3a70ed4a13015758ad6b30cf24f997 Mon Sep 17 00:00:00 2001
From: Jens Nolte <git@queezle.net>
Date: Sun, 11 Oct 2020 00:08:16 +0200
Subject: [PATCH] Replace Updateable with Settable class

---
 src/lib/Qd/Observable.hs | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/lib/Qd/Observable.hs b/src/lib/Qd/Observable.hs
index c784cec..ed9dafb 100644
--- a/src/lib/Qd/Observable.hs
+++ b/src/lib/Qd/Observable.hs
@@ -6,6 +6,7 @@ module Qd.Observable (
   subscribe',
   SubscriptionHandle(..),
   RegistrationHandle(..),
+  Settable(..),
   Disposable(..),
   ObservableCallback,
   ObservableState,
@@ -72,6 +73,10 @@ instance Observable v o => Observable v (IO o) where
     subscribe observable callback
 
 
+class Settable v a where
+  setValue :: a -> v -> IO ()
+
+
 -- | Existential quantification wrapper for the Observable type class.
 data SomeObservable v = forall o. Observable v o => SomeObservable o
 instance Observable v (SomeObservable v) where
@@ -105,6 +110,10 @@ instance Observable v (BasicObservable v) where
       unsubscribe' :: Unique -> IO ()
       unsubscribe' key = modifyMVar_ mvar $ \(state, subscribers) -> return (state, HM.delete key subscribers)
 
+instance Settable v (BasicObservable v) where
+  setValue basicObservable = setBasicObservable basicObservable . Just
+
+
 createBasicObservable :: Maybe v -> IO (BasicObservable v)
 createBasicObservable defaultValue = do
   BasicObservable <$> newMVar (defaultValue, HM.empty)
-- 
GitLab