fix: Refine mobile chat layout and peer selection logic
- Adjust mobile chat component to ensure proper display of peer list and chat view based on selection. - Enhance avatar and username rendering for selected peers, ensuring fallback options are in place. - Improve responsiveness and usability of the chat interface, particularly for mobile users. - Update message display logic to maintain consistency across different screen sizes. refactor: Update desktop chat layout for improved structure - Change the layout of the desktop chat component to use a full-height column flexbox, enhancing the overall structure and responsiveness. - Ensure better alignment and spacing within the chat interface for a more organized appearance.
This commit is contained in:
parent
87663d1d87
commit
3bd87ee712
1 changed files with 133 additions and 112 deletions
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<div class="flex flex-col h-full">
|
||||
<!-- Mobile: Peer List View -->
|
||||
<div v-if="!selectedPeer || (isMobile && !showChat)" class="flex flex-col h-full">
|
||||
<div v-if="isMobile && (!selectedPeer || !showChat)" class="flex flex-col h-full">
|
||||
<!-- Header -->
|
||||
<div class="flex items-center justify-between p-4 border-b">
|
||||
<div class="flex items-center space-x-3">
|
||||
|
|
@ -70,13 +70,13 @@
|
|||
<ArrowLeft class="h-5 w-5" />
|
||||
</Button>
|
||||
<Avatar class="h-8 w-8">
|
||||
<AvatarImage v-if="getPeerAvatar(selectedPeer)" :src="getPeerAvatar(selectedPeer)!" />
|
||||
<AvatarFallback>{{ getPeerInitials(selectedPeer) }}</AvatarFallback>
|
||||
<AvatarImage v-if="selectedPeer && getPeerAvatar(selectedPeer)" :src="getPeerAvatar(selectedPeer)!" />
|
||||
<AvatarFallback>{{ selectedPeer ? getPeerInitials(selectedPeer) : 'U' }}</AvatarFallback>
|
||||
</Avatar>
|
||||
<div>
|
||||
<h3 class="font-medium">{{ selectedPeer.username || 'Unknown User' }}</h3>
|
||||
<h3 class="font-medium">{{ selectedPeer?.username || 'Unknown User' }}</h3>
|
||||
<p class="text-xs text-muted-foreground">
|
||||
{{ formatPubkey(selectedPeer.pubkey) }}
|
||||
{{ selectedPeer ? formatPubkey(selectedPeer.pubkey) : '' }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -134,7 +134,27 @@
|
|||
</div>
|
||||
|
||||
<!-- Desktop: Split View -->
|
||||
<div v-else class="flex flex-1 overflow-hidden">
|
||||
<div v-else-if="!isMobile" class="flex flex-col h-full">
|
||||
<!-- Header -->
|
||||
<div class="flex items-center justify-between p-4 border-b">
|
||||
<div class="flex items-center space-x-3">
|
||||
<h2 class="text-lg font-semibold">Chat</h2>
|
||||
<Badge v-if="isConnected" variant="default" class="text-xs">
|
||||
Connected
|
||||
</Badge>
|
||||
<Badge v-else variant="secondary" class="text-xs">
|
||||
Disconnected
|
||||
</Badge>
|
||||
</div>
|
||||
<Button @click="refreshPeers" :disabled="isLoading" size="sm">
|
||||
<RefreshCw v-if="isLoading" class="h-4 w-4 animate-spin" />
|
||||
<RefreshCw v-else class="h-4 w-4" />
|
||||
Refresh Peers
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
<!-- Main Content -->
|
||||
<div class="flex flex-1 overflow-hidden">
|
||||
<!-- Peer List -->
|
||||
<div class="w-80 border-r bg-muted/30">
|
||||
<div class="p-4 border-b">
|
||||
|
|
@ -247,6 +267,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue