fix(ui): hide buddy list separator when everyone is offline
- commit
- 85bf2ffa8b42f972ede1e3b3bd9a8e9d9426dea0
- author
- bnema · · 2025-12-15 22:04 UTC
- committer
- bnema · · 2025-12-15 22:05 UTC
- parent
- 4065baa
- signature
- GPG Unverified
2B82207D370127A0The key is unknown
2 files · +4 -17
M src/lib/components/chat-room.svelte +3 -1
| @@ -816,7 +816,9 @@ | |||
| 816 | 816 | ||
| 817 | 817 | <!-- Offline users section --> | |
| 818 | 818 | {#if usersOffline.length > 0} | |
| 819 | - | <div class="section-separator"></div> | |
| 819 | + | {#if usersOnline.length > 0} | |
| 820 | + | <div class="section-separator"></div> | |
| 821 | + | {/if} | |
| 820 | 822 | <p class="section-header offline-header">Hors ligne ({usersOffline.length})</p> | |
| 821 | 823 | {#each usersOffline as user (user.id)} | |
| 822 | 824 | <div class="user offline"> | |
| @@ -816,7 +816,9 @@ | |||||
| 816 | 816 | ||||
| 817 | <!-- Offline users section --> | 817 | <!-- Offline users section --> | ||
| 818 | {#if usersOffline.length > 0} | 818 | {#if usersOffline.length > 0} | ||
| 819 | - | <div class="section-separator"></div> | 819 | + | {#if usersOnline.length > 0} |
| 820 | + | <div class="section-separator"></div> | |||
| 821 | + | {/if} | |||
| 820 | <p class="section-header offline-header">Hors ligne ({usersOffline.length})</p> | 822 | <p class="section-header offline-header">Hors ligne ({usersOffline.length})</p> | ||
| 821 | {#each usersOffline as user (user.id)} | 823 | {#each usersOffline as user (user.id)} | ||
| 822 | <div class="user offline"> | 824 | <div class="user offline"> | ||
M src/lib/components/formatted-message.svelte +1 -16
| @@ -1,7 +1,7 @@ | |||
| 1 | 1 | <script lang="ts"> | |
| 2 | 2 | import type { EnrichedMessage } from '../types/chat'; | |
| 3 | 3 | import type { TextStyle } from '../types/text-formatting'; | |
| 4 | - | import { formatText, createGradientText } from '../utils/text-formatter'; | |
| 4 | + | import { formatText, createGradientText, escapeHtml } from '../utils/text-formatter'; | |
| 5 | 5 | import { DEFAULT_TEXT_STYLE } from '../types/text-formatting'; | |
| 6 | 6 | ||
| 7 | 7 | // Props | |
| @@ -31,7 +31,6 @@ | |||
| 31 | 31 | if (message.styleData) { | |
| 32 | 32 | try { | |
| 33 | 33 | style = JSON.parse(message.styleData); | |
| 34 | - | console.debug('Parsed message style:', style, 'for message:', message.content); | |
| 35 | 34 | } catch (parseError) { | |
| 36 | 35 | console.warn('Failed to parse message style data:', parseError); | |
| 37 | 36 | } | |
| @@ -40,19 +39,12 @@ | |||
| 40 | 39 | // Check if this is a gradient message | |
| 41 | 40 | if (style.gradient && Array.isArray(style.gradient) && style.gradient.length > 1) { | |
| 42 | 41 | // Use character-by-character gradient for better compatibility | |
| 43 | - | console.debug( | |
| 44 | - | 'Creating gradient text with colors:', | |
| 45 | - | style.gradient, | |
| 46 | - | 'for text:', | |
| 47 | - | message.content | |
| 48 | - | ); | |
| 49 | 42 | formattedContent = createGradientText( | |
| 50 | 43 | message.content, | |
| 51 | 44 | style.gradient, | |
| 52 | 45 | 'gradient-text-static', | |
| 53 | 46 | style | |
| 54 | 47 | ); | |
| 55 | - | console.debug('Generated gradient HTML:', formattedContent); | |
| 56 | 48 | return; | |
| 57 | 49 | } | |
| 58 | 50 | ||
| @@ -73,13 +65,6 @@ | |||
| 73 | 65 | processMessage(); | |
| 74 | 66 | }); | |
| 75 | 67 | ||
| 76 | - | // Utility function to escape HTML | |
| 77 | - | function escapeHtml(text: string): string { | |
| 78 | - | const div = document.createElement('div'); | |
| 79 | - | div.textContent = text; | |
| 80 | - | return div.innerHTML; | |
| 81 | - | } | |
| 82 | - | ||
| 83 | 68 | // Generate inline styles for the message | |
| 84 | 69 | function getMessageStyles(): string { | |
| 85 | 70 | if (!message.hasFormatting || !message.styleData) { | |
| @@ -1,7 +1,7 @@ | |||||
| 1 | <script lang="ts"> | 1 | <script lang="ts"> | ||
| 2 | import type { EnrichedMessage } from '../types/chat'; | 2 | import type { EnrichedMessage } from '../types/chat'; | ||
| 3 | import type { TextStyle } from '../types/text-formatting'; | 3 | import type { TextStyle } from '../types/text-formatting'; | ||
| 4 | - | import { formatText, createGradientText } from '../utils/text-formatter'; | 4 | + | import { formatText, createGradientText, escapeHtml } from '../utils/text-formatter'; |
| 5 | import { DEFAULT_TEXT_STYLE } from '../types/text-formatting'; | 5 | import { DEFAULT_TEXT_STYLE } from '../types/text-formatting'; | ||
| 6 | 6 | ||||
| 7 | // Props | 7 | // Props | ||
| @@ -31,7 +31,6 @@ | |||||
| 31 | if (message.styleData) { | 31 | if (message.styleData) { | ||
| 32 | try { | 32 | try { | ||
| 33 | style = JSON.parse(message.styleData); | 33 | style = JSON.parse(message.styleData); | ||
| 34 | - | console.debug('Parsed message style:', style, 'for message:', message.content); | |||
| 35 | } catch (parseError) { | 34 | } catch (parseError) { | ||
| 36 | console.warn('Failed to parse message style data:', parseError); | 35 | console.warn('Failed to parse message style data:', parseError); | ||
| 37 | } | 36 | } | ||
| @@ -40,19 +39,12 @@ | |||||
| 40 | // Check if this is a gradient message | 39 | // Check if this is a gradient message | ||
| 41 | if (style.gradient && Array.isArray(style.gradient) && style.gradient.length > 1) { | 40 | if (style.gradient && Array.isArray(style.gradient) && style.gradient.length > 1) { | ||
| 42 | // Use character-by-character gradient for better compatibility | 41 | // Use character-by-character gradient for better compatibility | ||
| 43 | - | console.debug( | |||
| 44 | - | 'Creating gradient text with colors:', | |||
| 45 | - | style.gradient, | |||
| 46 | - | 'for text:', | |||
| 47 | - | message.content | |||
| 48 | - | ); | |||
| 49 | formattedContent = createGradientText( | 42 | formattedContent = createGradientText( | ||
| 50 | message.content, | 43 | message.content, | ||
| 51 | style.gradient, | 44 | style.gradient, | ||
| 52 | 'gradient-text-static', | 45 | 'gradient-text-static', | ||
| 53 | style | 46 | style | ||
| 54 | ); | 47 | ); | ||
| 55 | - | console.debug('Generated gradient HTML:', formattedContent); | |||
| 56 | return; | 48 | return; | ||
| 57 | } | 49 | } | ||
| 58 | 50 | ||||
| @@ -73,13 +65,6 @@ | |||||
| 73 | processMessage(); | 65 | processMessage(); | ||
| 74 | }); | 66 | }); | ||
| 75 | 67 | ||||
| 76 | - | // Utility function to escape HTML | |||
| 77 | - | function escapeHtml(text: string): string { | |||
| 78 | - | const div = document.createElement('div'); | |||
| 79 | - | div.textContent = text; | |||
| 80 | - | return div.innerHTML; | |||
| 81 | - | } | |||
| 82 | - | ||||
| 83 | // Generate inline styles for the message | 68 | // Generate inline styles for the message | ||
| 84 | function getMessageStyles(): string { | 69 | function getMessageStyles(): string { | ||
| 85 | if (!message.hasFormatting || !message.styleData) { | 70 | if (!message.hasFormatting || !message.styleData) { | ||