initial commit

This commit is contained in:
2026-04-29 22:06:02 +02:00
parent ab2efa1ed4
commit 68a895c642
3 changed files with 37 additions and 8 deletions
+12
View File
@@ -74,5 +74,17 @@ export class APIService {
return await response.json();
}
async getConversation( token: string, user1Id: string, user2Id:string ): Promise<Message[]> {
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();
}
}
+7
View File
@@ -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 {
+18 -8
View File
@@ -128,17 +128,27 @@ async function loadUsers(): Promise<boolean> {
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;
}
}
}
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.");
}
};