Slight code simplification.

beta
Philippe Pittoli 2023-07-03 13:38:21 +02:00
parent 62347d40b2
commit cbaeaf8ee2
4 changed files with 14 additions and 28 deletions

View File

@ -257,7 +257,7 @@ handleAction = case _ of
, email: Just (Email.Email email) , email: Just (Email.Email email)
, password: pass } , password: pass }
sendArrayBuffer webSocket ab sendArrayBuffer webSocket ab
appendMessageReset "[😇] Trying to add a user" appendMessage "[😇] Trying to add a user"
HandleWebSocket wsEvent -> HandleWebSocket wsEvent ->
case wsEvent of case wsEvent of

View File

@ -278,7 +278,7 @@ handleAction = case _ of
, email: Just (Email.Email email) , email: Just (Email.Email email)
, password: pass } , password: pass }
sendArrayBuffer webSocket ab sendArrayBuffer webSocket ab
appendMessageReset "[😇] Trying to register" appendMessage "[😇] Trying to register"
AuthenticationAttempt ev -> do AuthenticationAttempt ev -> do
H.liftEffect $ Event.preventDefault ev H.liftEffect $ Event.preventDefault ev
@ -313,7 +313,7 @@ handleAction = case _ of
H.liftEffect $ do H.liftEffect $ do
ab <- AuthD.serialize (AuthD.MkLogin { login: login, password: pass }) ab <- AuthD.serialize (AuthD.MkLogin { login: login, password: pass })
sendArrayBuffer webSocket ab sendArrayBuffer webSocket ab
appendMessageReset $ "[😇] Trying to connect with login: " <> login appendMessage $ "[😇] Trying to connect with login: " <> login
HandleWebSocket wsEvent -> HandleWebSocket wsEvent ->
case wsEvent of case wsEvent of

View File

@ -296,7 +296,7 @@ handleAction = case _ of
H.liftEffect $ do H.liftEffect $ do
ab <- DNSManager.serialize $ DNSManager.MkDeleteDomain { domain: domain } ab <- DNSManager.serialize $ DNSManager.MkDeleteDomain { domain: domain }
sendArrayBuffer webSocket ab sendArrayBuffer webSocket ab
appendMessageReset $ "[😇] Removing domain: " <> domain appendMessage $ "[😇] Removing domain: " <> domain
NewDomainAttempt ev -> do NewDomainAttempt ev -> do
H.liftEffect $ Event.preventDefault ev H.liftEffect $ Event.preventDefault ev
@ -329,7 +329,7 @@ handleAction = case _ of
H.liftEffect $ do H.liftEffect $ do
ab <- DNSManager.serialize $ DNSManager.MkNewDomain { domain: new_domain } ab <- DNSManager.serialize $ DNSManager.MkNewDomain { domain: new_domain }
sendArrayBuffer webSocket ab sendArrayBuffer webSocket ab
appendMessageReset "[😇] Trying to add a new domain" appendMessage "[😇] Trying to add a new domain"
HandleWebSocket wsEvent -> HandleWebSocket wsEvent ->
case wsEvent of case wsEvent of

View File

@ -80,7 +80,9 @@ decodeMessageEvent = \msgEvent -> do
foreign' = WSME.data_ msgEvent foreign' = WSME.data_ msgEvent
case foreignToArrayBuffer foreign' of case foreignToArrayBuffer foreign' of
Left errs -> pure $ WebSocketError $ UnknownError errs Left errs -> pure $ WebSocketError $ UnknownError errs
Right arrayBuffer -> pure $ WebSocketMessage { message: arrayBuffer, origin: WSME.origin msgEvent, lastEventId: WSME.lastEventId msgEvent } Right arrayBuffer -> pure $ WebSocketMessage { message: arrayBuffer
, origin: WSME.origin msgEvent
, lastEventId: WSME.lastEventId msgEvent }
--------------------------- ---------------------------
-- Errors -- Errors
@ -114,13 +116,12 @@ type IncompleteState rows
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- Helpers for updating the array of messages sent/received -- Helpers for updating the array of messages sent/received
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- Append a new message to the chat history, with a boolean that allows you to
-- clear the text input field or not. The number of displayed `messages` in the -- Append a new message to the chat history.
-- chat history (including system) is controlled by the `messageHistoryLength` -- The number of displayed `messages` in the chat history (including system)
-- field in the component `State`. -- is controlled by the `messageHistoryLength` field in the component `State`.
-- TODO: first arg (clearField) isn't used anymore. appendMessage :: forall r m. MonadState (IncompleteState r) m => String -> m Unit
appendMessageGeneric :: forall r m. MonadState (IncompleteState r) m => Boolean -> String -> m Unit appendMessage msg = do
appendMessageGeneric _ msg = do
histSize <- H.gets _.messageHistoryLength histSize <- H.gets _.messageHistoryLength
H.modify_ \st -> st { messages = appendSingle histSize msg st.messages } H.modify_ \st -> st { messages = appendSingle histSize msg st.messages }
where where
@ -130,25 +131,10 @@ appendMessageGeneric _ msg = do
| A.length xs < maxHist = xs `A.snoc` x | A.length xs < maxHist = xs `A.snoc` x
| otherwise = (A.takeEnd (maxHist-1) xs) `A.snoc` x | otherwise = (A.takeEnd (maxHist-1) xs) `A.snoc` x
-- Append a new message to the chat history, while not clearing
-- the user input field
appendMessage :: forall r m. MonadState (IncompleteState r) m => String -> m Unit
appendMessage = appendMessageGeneric false
-- Append a new message to the chat history and also clear
-- the user input field
appendMessageReset :: forall r m. MonadState (IncompleteState r) m => String -> m Unit
appendMessageReset = appendMessageGeneric true
-- Append a system message to the chat log. -- Append a system message to the chat log.
systemMessage :: forall r m. MonadState (IncompleteState r) m => String -> m Unit systemMessage :: forall r m. MonadState (IncompleteState r) m => String -> m Unit
systemMessage msg = appendMessage ("[🤖] System: " <> msg) systemMessage msg = appendMessage ("[🤖] System: " <> msg)
-- As above, but also clears the user input field. e.g. in
-- the case of a "/disconnect" command
systemMessageReset :: forall r m. MonadState (IncompleteState r) m => String -> m Unit
systemMessageReset msg = appendMessageReset ("[🤖] System: " <> msg)
-- A system message to use when a message cannot be sent. -- A system message to use when a message cannot be sent.
unableToSend :: forall r m. MonadState (IncompleteState r) m => String -> m Unit unableToSend :: forall r m. MonadState (IncompleteState r) m => String -> m Unit
unableToSend reason = systemMessage ("Unable to send. " <> reason) unableToSend reason = systemMessage ("Unable to send. " <> reason)