module Chiasma.View.State where

import Chiasma.Data.Ident (Ident)
import Chiasma.Data.TmuxId (PaneId)
import Chiasma.Data.Views (Views, ViewsError)
import qualified Chiasma.View as Views (paneId)

paneId ::
  Members [AtomicState Views, Stop ViewsError] r =>
  Ident ->
  Sem r PaneId
paneId :: forall (r :: EffectRow).
Members '[AtomicState Views, Stop ViewsError] r =>
Ident -> Sem r PaneId
paneId Ident
paneIdent =
  Either ViewsError PaneId -> Sem r PaneId
forall err (r :: EffectRow) a.
Member (Stop err) r =>
Either err a -> Sem r a
stopEither (Either ViewsError PaneId -> Sem r PaneId)
-> Sem r (Either ViewsError PaneId) -> Sem r PaneId
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< (Views -> Either ViewsError PaneId)
-> Sem r (Either ViewsError PaneId)
forall s s' (r :: EffectRow).
Member (AtomicState s) r =>
(s -> s') -> Sem r s'
atomicGets (Ident -> Views -> Either ViewsError PaneId
Views.paneId Ident
paneIdent)