diff --git a/src/APIService.ts b/src/APIService.ts index 2f1d09f..0c31bdc 100644 --- a/src/APIService.ts +++ b/src/APIService.ts @@ -74,5 +74,17 @@ export class APIService { return await response.json(); } + async getConversation( token: string, user1Id: string, user2Id:string ): Promise { + const url = new URL( `${APIService.baseUrl}/get_conversation.php` ); + url.searchParams.set( "token", token ); + url.searchParams.set( "token", user1Id ); + url.searchParams.set( "conversation_id", user2Id ); + + const response = await fetch( url, {method: "GET"} );; + if ( !response.ok ) { + throw new Error ( 'Failed to fetch conversation: ' + response.statusText ); + } + return await response.json(); + } } diff --git a/src/ChatUI.ts b/src/ChatUI.ts index 25b5cd6..6733588 100644 --- a/src/ChatUI.ts +++ b/src/ChatUI.ts @@ -49,6 +49,13 @@ export class ChatUI { container.scrollTop = container.scrollHeight; } + renderConversation( messages: Message[], currentUserId: string ): void { + this.clearMessages(); + messages.forEach( ( message ) => { + this.renderMessage( message, currentUserId ); + }); + } + // show error message - auto-hide after 5 seconds showError ( message: string ) : void { diff --git a/src/main.ts b/src/main.ts index 03f61d5..533a4fc 100644 --- a/src/main.ts +++ b/src/main.ts @@ -128,17 +128,27 @@ async function loadUsers(): Promise { try { const users = await api.getUsers(state.getToken(), state.getUserId()); ui.clearError(); - - ui.renderUserList(users, (user: User) => { - state.setSelectedReceiverId(user.id); - ui.setActiveUser(user.id); - ui.clearMessages(); - }); - + ui.renderUserList(users, onUserClick ); return true; } catch (error) { ui.showError("Could not load user list."); console.error("Error loading user list:", error); return false; } -} \ No newline at end of file +} + +const onUserClick = async ( user: User ) => { + ui.setActiveUser( user.id ); + ui.showView( "chat-view" ); + + try { + const conversation = await api.getConversation( + state.getToken(), + state.getUserId(), + user.id + ); + ui.renderConversation( conversation, state.getUserId() ); + } catch (error) { + ui.showError("Could not load conversation. Please try again."); + } +}; \ No newline at end of file