---
# System prepended metadata

title: Client meeting (31-10-2022)
tags: [client-archief]

---

---
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)    
        ```

