Skip to content
Extraits de code Groupes Projets
message.svelte 1,12 ko
Newer Older
  • Learn to ignore specific revisions
  • Brieuc Dubois's avatar
    Brieuc Dubois a validé
    <script lang="ts">
    	import type Message from '$lib/types/message';
    
    	import { displayTime } from '$lib/utils/date';
    
    	import { AcademicCap, Check, Icon, Sparkles, User } from 'svelte-hero-icons';
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	import { user } from '$lib/types/user';
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    
    	export let message: Message;
    
    
    	let timer: number;
    	$: displayedTime = displayTime(message.created_at);
    	$: {
    		clearInterval(timer);
    		timer = setInterval(() => {
    			displayedTime = displayTime(message.created_at);
    		}, 1000);
    	}
    
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	const isSender = message.user.id == $user?.id;
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    </script>
    
    
    <div class="chat" class:chat-start={!isSender} class:chat-end={isSender}>
    	<div class="rounded-full p-3 mx-2 bg-gray-200 chat-image" title={message.user.nickname}>
    		{#if message.user.type == 0}
    			<Icon src={Sparkles} class="w-6 m-auto" />
    		{:else if message.user.type == 1}
    			<Icon src={AcademicCap} class="w-6 m-auto" />
    		{:else}
    			<Icon src={User} class="w-6 m-auto" />
    		{/if}
    
    	<div class="chat-bubble whitespace-pre-wrap" class:chat-bubble-primary={!isSender}>
    
    		{message.content}
    	</div>
    	<div class="chat-footer opacity-50">
    
    		<Icon src={Check} class="w-4 inline" />
    
    		{displayedTime}
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    	</div>
    </div>