module Role.Watcher where import Types import Log import Pty import CmdLine import WebSockets import SessionID import Control.Concurrent.STM import qualified Data.Text as T import Role.Developer (processSessionStart, getUserMessage, Output(..), emitOutput) run :: WatchOpts -> IO () run os = runClientApp $ clientApp (ConnectMode (T.pack (watchUrl os))) watcher watcher :: TChan (Message Entered) -> TChan (Message Seen) -> SessionID -> IO () watcher _ichan ochan sid = inRawMode $ do st <- processSessionStart ochan nullLogger go st where go st = do (o, _msg) <- atomically $ getUserMessage ochan st emitOutput o go st