diff --git a/src/Quasar/Observable.hs b/src/Quasar/Observable.hs index ac809fd21ecd23066a7f095f9c927a695d5b3b4f..120051fb40a715e54d078e4aded246bde8f43973 100644 --- a/src/Quasar/Observable.hs +++ b/src/Quasar/Observable.hs @@ -59,6 +59,11 @@ instance Applicative ObservableMessage where liftA2 _ _ (ObservableNotAvailable ex) = ObservableNotAvailable ex liftA2 _ _ ObservableLoading = ObservableLoading +instance Monad ObservableMessage where + (ObservableUpdate x) >>= fn = fn x + ObservableLoading >>= _ = ObservableLoading + (ObservableNotAvailable ex) >>= _ = ObservableNotAvailable ex + toObservableUpdate :: MonadThrow m => ObservableMessage a -> m (Maybe a) toObservableUpdate (ObservableUpdate value) = pure $ Just value