Skip to content
Extraits de code Groupes Projets
Valider a9b8aba7 rédigé par Brieuc Dubois's avatar Brieuc Dubois
Parcourir les fichiers

frontend: messages

parent 19faab7d
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -3,7 +3,8 @@ ...@@ -3,7 +3,8 @@
import Message from '$lib/types/message'; import Message from '$lib/types/message';
import type Session from '$lib/types/session'; import type Session from '$lib/types/session';
import { onMount } from 'svelte'; import { onMount } from 'svelte';
import { get } from 'svelte/store'; import MessageC from './message.svelte';
import { Icon, PaperAirplane } from 'svelte-hero-icons';
let message = ''; let message = '';
export let session: Session; export let session: Session;
...@@ -26,32 +27,36 @@ ...@@ -26,32 +27,36 @@
message = ''; message = '';
messages = session.messages; messages = session.messages;
} }
function scrollToBottom(node: HTMLElement) {
node.scrollTop = node.scrollHeight;
}
</script> </script>
<div id="mainbox"> <div class="flex flex-col md:my-8 min-w-fit w-full max-w-4xl border-2">
<div id="chatbox"> <div class="flex-grow h-48 overflow-auto px-4 flex flex-col" use:scrollToBottom>
{#each messages.sort((a, b) => a.created_at.getTime() - b.created_at.getTime()) as message (message.id)} {#each messages.sort((a, b) => a.created_at.getTime() - b.created_at.getTime()) as message (message.id)}
{#if message.user === JWTSession.user()} <MessageC {message} />
<div>You: {message.content}</div>
{:else}
<div>{message.user.username}: {message.content}</div>
{/if}
{/each} {/each}
</div> </div>
<input <div class="flex flex-row h-20 mt-2">
type="text" <textarea
id="chatinput" class="flex-grow border-2 border-gray-300 rounded-md p-2 resize-none overflow-y-hidden"
placeholder="Send a message..." placeholder="Send a message..."
bind:value={message} bind:value={message}
on:keypress={async (e) => { on:keypress={async (e) => {
if (e.key === 'Enter') { if (e.key === 'Enter' && !e.shiftKey) {
await sendMessage(); await sendMessage();
} }
}} }}
/> />
<button class="w-12 button rounded-md" on:click={sendMessage}>
<Icon src={PaperAirplane} />
</button>
</div>
</div> </div>
<style lang="less"> <!-- <style lang="less">
#mainbox { #mainbox {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
...@@ -69,4 +74,4 @@ ...@@ -69,4 +74,4 @@
#chatinput { #chatinput {
height: 50px; height: 50px;
} }
</style> </style> -->
...@@ -85,28 +85,3 @@ ...@@ -85,28 +85,3 @@
</table> </table>
</div> </div>
</div> </div>
<!--
<style lang="less">
.menu {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -75%);
background-color: white;
padding: 20px;
border-radius: 10px;
}
#bg {
background-color: #000c;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
td {
min-width: 200px;
}
</style> -->
<script lang="ts">
import JWTSession from '$lib/stores/JWTSession';
import type Message from '$lib/types/message';
export let message: Message;
const isSender = message.user == JWTSession.user();
</script>
<div class="w-full flex" class:justify-end={isSender}>
<div
class="bg-gray-200 rounded-b-xl my-2 p-4 w-fit"
class:bg-blue-200={isSender}
class:rounded-tl-xl={isSender}
class:rounded-tr-xl={!isSender}
>
<div class="font-bold mb-1 capitalize">
{message.user.username}
</div>
<div class="max-w-3xl">{message.content}</div>
</div>
</div>
...@@ -24,26 +24,11 @@ ...@@ -24,26 +24,11 @@
}); });
</script> </script>
<div class="container"> <div class="h-screen flex flex-col">
<Header /> <Header />
{#if session} {#if session}
<div class="vareas"> <div class="flex flex-row flex-grow justify-evenly">
<Chatbox {session} /> <Chatbox {session} />
</div> </div>
{/if} {/if}
</div> </div>
<style lang="less">
.container {
display: flex;
flex-direction: column;
height: 100vh;
}
.vareas {
display: flex;
flex-direction: row;
flex-grow: 1;
justify-content: space-evenly;
}
</style>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter