---
# System prepended metadata

title: Client Meeting 05-12-2022
tags: [client-archief]

---

---
tags: client-archief
---

# Client Meeting 05-12-2022

## UI Functionality
The login, create account and limbo screens are fully functional. 
The chatroom screen must be constructed graphically (by Joep : `feature/chat-client/chatrooms`) and will then be made functional (by Henri : `feature/chat-client/chatroom-functional`) : 
 - Keystroke recordings
 - Command and message inputs
 - User updates

Joep will create messageboxes in every screen.
Henri will use these to print all sorts of messages : 
 - Error messages, from server or client itself
 - Info about commands and command arguments : 
     - If the input starts with a backslash : show a list of possible commands
     - If a certain command is recognized : show all parameters of this command
 - ...



## Client database
The client will hold a database with the keystrokes. Some methods will be supplied to interact with this database. Some methods could be to check whether the keystrokes may be sent, performing ngram analysis, ...
Henri will : 
 - Create a new command to allow users in a channel to perform ngram analysis on their data
 - Use the supplied methods to interact with the database


## User input

### Problem requesting chatrooms
For some commmands (like delete-chatroom), information is needed about all the currently available chatrooms (like chatroomIds). But this information is not always available, only in the limbo state. We have decided to limit the user to using these commands in the limbo.
Max will adjust the code to this decision

### Other issues

Max will fix some issues in processInput (`feature/chat-client/chatroomcommands`): 
 - In some commands, the function doesn't wait for a response as confirm
 - Fix strange issues when blessed and vitest are run at the same time (solution : make sure no blessed methods are called when running tests, since these are part of the UI, they don't have to be tested anyway)


## Small fixes

Henri will fix multiple small other problems (`feature/chat-client/bugfixes`): 
 - Communicate issues about the server to the developers of the server : 
     - De server stuurt nog geen updates over channel aanpassingen of user joine/leave
     - Requests for delete profile, change nickname and change password don't receive a response
     - De server does not save anything to disk yet (nothing remembered when closing the server)
     - A login response should contain the users nickname, since the user only has to fill in his email and password
 - Make sure windows is supported, this means not being able to use a mouse + fix issue with websocket not connecting (solution : use localhost instead of 127.0.0.1)
 - Using localtunnel : connection closed after 30s of inactivity (-> ping messages)
 - Make sure to ping the server every 10 seconds or so, this makes sure the connection stays open
 - User nickname is not supplied from a loginResponse : adjust protocol and communicate with server developers
 - Keystrokes : Not all keys have all attributes specified in keypressEvent (for example ctrl, shift, meta not specified when pressing a number)
 - Strange bug in blessed : some lettres don't show up until shift is pressed??
 - Close the program on escape and CTRL+C
 - What happens when we cannot connect? : 
     - An ERRORCONREFFUSED error appears, but keeps trying to connect!
     - When the connection closes, we should try reconnecting. But if reconnected, the client must log back in. The easiest solution for now is to just send the user back to the login screen once the connection is closed (but also give an error/message to the user)
 - Make sure the users is never out of focus of the main inputbox in limbo and chatroom
 - Auto focus on the first or primary box on a screen
 - Time formatting in chatroom not optimal (not all same length)
 - Make the password and repeat password boxes in create account censored
 - Make the screen look good, even if the terminal is very big + if terminal is too small to make the screens look any good, tell the user to make the terminal bigger