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