From 29f658db3dec8c14c15ade865bd0bb30339d6b4c Mon Sep 17 00:00:00 2001
From: Jens Nolte <git@queezle.net>
Date: Wed, 7 Oct 2020 00:20:03 +0200
Subject: [PATCH] Add Observable instance for Observables wrapped in IO

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

diff --git a/src/lib/Qd/Observable.hs b/src/lib/Qd/Observable.hs
index 947ea32..ccdc225 100644
--- a/src/lib/Qd/Observable.hs
+++ b/src/lib/Qd/Observable.hs
@@ -54,6 +54,14 @@ subscribe' observable callback = mfix $ \subscription -> subscribe observable (c
 
 type ObservableCallback v = ObservableMessage v -> IO ()
 
+instance Observable v o => Observable v (IO o) where
+  getValue :: IO o -> IO (ObservableState v)
+  getValue getObservable = getValue =<< getObservable
+  subscribe :: IO o -> (ObservableMessage v -> IO ()) -> IO SubscriptionHandle
+  subscribe getObservable callback = do
+    observable <- getObservable
+    subscribe observable callback
+
 
 -- | Existential quantification wrapper for the Observable type class.
 data SomeObservable v = forall o. Observable v o => SomeObservable o
-- 
GitLab