---
tags : client-archief
---
:::danger
Deze file is gearchiveerd, deze wordt enkel nog bewaard om een overzicht te hebben van onze werking.
:::
# Client meeting (31-10-2022)
### Opstart client : login
- Bij opstart :
- identificatie opgeven
- Niet gekend : nieuw profiel maken (wel aangeven dat het profiel niet is gevonden)
- wachtwoord
- Als ok : in limbo (geen chatroom gejoined)
### Nodige commands
- Commands : (kebabstyle)
- 'change-name' : error als server zegt niet ok
- 'change-password' : error als server zegt niet ok
- first old password
- 'join-room' : error als server nog niet bestaat
- 'leave-room' (geen argument) : error als niet in room
- 'new-room' : error als naam niet ok is
- meteen joinen ook
- wordt ook beheerder
- 'delete-room' : error als niet bestaat of geen beheerder
- 'logout' : uitloggen (om naar andere profiel te gaan zonder programma te herstarten)
### Overige
- Terugscrollen :
- Meer berichten nodig? vraag ze aan de server (later detail : niet oneindig veel berichten opslaan)
- Als bericht versturen : automatisch terugspringen
## Technische details
- functie die bij opstart connectie opzet en test
- Indien ooit ergens geen connectie : error message
- functie om scherm te clearen
- login functie
- clear scherm
- geef id in, als niet bestaande : vraag om nieuw profiel te maken, indien 'y' : profielmaakfunctie oproepen
- indien 'n' : passwoord ingeven (error bij fout), als juist : functie eindigt
- aparte profielmaakfunctie
- op einde ook gewoon functie beëindigen
- errors bij fouten
- na login / profiel maken succesvol (functie getermineerd): limbo
- clear
- tonen van rooms
- elke seconde bestaande rooms updaten
- 'Command : '-lijntje onderaan
- functie om bestaande rooms op te vragen
- functie om room te joinen
- Als room niet bestaat: server laat het weten
- In chatroom :
- backslash voor commands
- Alle messages van andere gebruikers in console
- Bovenaan : room name
- Onderaan : 'Message or Command : ' met message
- maximaal aantal characters : 240 characters
- pijltestoetsen : scrollen in berichten
- als bericht verzonden : terugscrollen
- Client object :
- Attributen : huidige chatroom & messages in de chatroom (met hun id/name) & hoe ver gescrolled binnen messages & keystroketimings & id & email & nickname
## Concrete task assignment
- Tasks :
- client object en websocket object creëren (Henri)
- opstart programma en connectie opzetten (Henri)
- Inteface met server definiëren (Henri)
- Login & Profiel aanmaken (Joep)
```typescript
function initiateLogin()
```
- Berichten & commands van gebruiker verwerken (Max)
```typescript
function processInput(input:string)
```
Functionaliteit afhankelijk van of string begint met backslash of niet
- Visueel Limbo state & chatroom display (Joep)
```typescript
function displayChatroom(room:ICLIENT.CurrentRoom)
function onArrowKeys(upordown:boolean, room:ICLIENT.CurrentRoom)
function displayLimboofzo()
```
De eerste functie houdt zich enkel bezig met het tonen vd messages enzo
De tweede functie verandert het room-object en roept de eerste op
## Useful information
- Definition of interface with server : the exact protocols are not yet known, thus the functions can not be determined exactly yet, but the goal is
- To have asynchronous functions to 'request' something from the server.
For example : Requesting all available chatrooms
```typescript
async public requestChatRooms() : Promise<ICLIENT.Chatroom[]> {}
```
These functions will only return a result when an answer has been given by the server
- If the server initializes communication with the client (instead of the other way around like above), a function will be called which handles this exact problem.
For example : a user has sent a message in the chatroom
```typescript
public receivedChatroomMessage(msg:ICLIENT.Message)
```