{#if mentionUnreadCount > 0 || connectionError}
{#if mentionUnreadCount > 0}
({mentionUnreadCount} mention{mentionUnreadCount > 1 ? 's' : ''})
{/if} {#if connectionError}
⚠️ {connectionError}
{/if}
{/if}
{#if rateLimitWarning}
{rateLimitWarning}
{#if cooldownEndTime}
Vous pourrez envoyer un autre message dans {cooldownProgress.toFixed(1)}s
{/if}
{/if}
handleScroll(e)} bind:this={chatArea} > {#if isInitialLoading}
{:else if isLoadingMore}
{/if} {#if showRegistrationPrompt}
Vous devez être inscrit pour lire l'historique complet de ce salon.
S'inscrire
{/if} {#each visibleMessages as message (message.id)}
{#if message.type === 'emote'}
{message.user.nickname}
{message.content}
{:else}
{message.user.nickname}:
{/if}
{/each}
{#if currentUser}
{/if}
{#if currentTextStyle.gradient && currentTextStyle.gradient.length > 1}
{@html formattedInputMessage}
{:else}
{@html formattedInputMessage}
{/if}
{#if showCharCounter}
{currentMessage.length}/{MAX_MESSAGE_LENGTH}
{/if}
{#if mentionOpen}
{/if} {#if cooldownEndTime}
{/if}
{usersOnline.length} {usersOnline.length === 1 ? 'personne ici' : 'personnes ici'}
{#each usersOnline as user (user.id)}
{ e.stopPropagation(); selectedUserId = user.id; closeUserMenu(); }} ondblclick={() => openImWith(user)} oncontextmenu={(e) => openUserMenu(e, user)} onkeydown={(e) => { if (e.key === 'Enter') openImWith(user); }} >
{user.nickname}
{/each} {#if usersOffline.length > 0}
Hors ligne
{#each usersOffline as user (user.id)}
{ e.stopPropagation(); selectedUserId = user.id; closeUserMenu(); }} ondblclick={() => openImWith(user)} oncontextmenu={(e) => openUserMenu(e, user)} onkeydown={(e) => { if (e.key === 'Enter') openImWith(user); }} >
{user.nickname}
{/each} {/if}
selectedUser && openImWith(selectedUser)}>IM
selectedUser && desktop.openProfile({ userId: selectedUser.id as Id<'users'>, nickname: selectedUser.nickname })}>Infos
selectedUser && void aim.addBuddy(selectedUser.id as Id<'users'>).catch(console.error)} >Ajouter
{#if userMenu}
e.stopPropagation()} onkeydown={(e) => { if (e.key === 'Escape') closeUserMenu(); }} >
{userMenu.user.nickname}
{#if currentUser && userMenu.user.id !== currentUser.id}
{ const u = userMenu?.user; closeUserMenu(); if (u) void openImWith(u); }}>Envoyer un message instantané
{ const u = userMenu?.user; closeUserMenu(); if (u) void aim.addBuddy(u.id as Id<'users'>).catch(console.error); }}>Ajouter à ma liste de contacts
{/if}
{ const u = userMenu?.user; closeUserMenu(); if (u) desktop.openProfile({ userId: u.id as Id<'users'>, nickname: u.nickname }); }}>Infos sur {userMenu.user.nickname}
{/if}