Skip to content

Commit 27e52b1

Browse files
committed
chore: fix group thing
1 parent d38e3c8 commit 27e52b1

File tree

4 files changed

+25
-71
lines changed

4 files changed

+25
-71
lines changed
224 KB
Binary file not shown.
-186 Bytes
Binary file not shown.
-193 Bytes
Binary file not shown.

platforms/pictique/src/routes/(protected)/messages/+page.svelte

Lines changed: 25 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
<script lang="ts">
22
import { goto } from '$app/navigation';
33
import { Message } from '$lib/fragments';
4-
import Group from '$lib/fragments/Group/Group.svelte';
54
import { isSearching, searchError, searchResults, searchUsers } from '$lib/stores/users';
6-
import type { Chat, GroupInfo, MessageType } from '$lib/types';
5+
import type { Chat, MessageType } from '$lib/types';
76
import { Avatar, Button, Input } from '$lib/ui';
87
import { clickOutside } from '$lib/utils';
98
import { apiClient } from '$lib/utils/axios';
109
import { onMount } from 'svelte';
1110
import { heading } from '../../store';
1211
1312
let messages = $state<MessageType[]>([]);
14-
let groups: GroupInfo[] = $state([]);
1513
let allMembers = $state<Record<string, string>[]>([]);
1614
let selectedMembers = $state<string[]>([]);
1715
let currentUserId = '';
@@ -25,42 +23,26 @@
2523
const { data: userData } = await apiClient.get('/api/users');
2624
currentUserId = userData.id;
2725
28-
// Separate direct messages and group chats
29-
const directMessages: MessageType[] = [];
30-
const groupChats: GroupInfo[] = [];
31-
32-
data.chats.forEach((c) => {
33-
const members = c.participants.filter((u) => u.id !== userData.id);
34-
const memberNames = members.map((m) => m.name ?? m.handle ?? m.ename);
35-
const isGroup = members.length > 1;
36-
37-
if (isGroup) {
38-
// This is a group chat
39-
groupChats.push({
40-
id: c.id,
41-
name: c.handle ?? memberNames.join(', '),
42-
avatar: '/images/group.png'
43-
});
44-
}
45-
46-
const avatar = isGroup
47-
? '/images/group.png'
48-
: members[0]?.avatarUrl ||
26+
// Filter out group chats, only show direct messages
27+
messages = data.chats
28+
.filter((c) => c.participants.length === 2) // Only direct messages (2 participants: user + other person)
29+
.map((c) => {
30+
const members = c.participants.filter((u) => u.id !== userData.id);
31+
const memberNames = members.map((m) => m.name ?? m.handle ?? m.ename);
32+
const avatar =
33+
members[0]?.avatarUrl ||
4934
'https://cdn.jsdelivr.net/npm/[email protected]/icons/people-fill.svg';
5035
51-
directMessages.push({
52-
id: c.id,
53-
avatar,
54-
username: c.handle ?? memberNames.join(', '),
55-
unread: c.latestMessage ? !c.latestMessage.isRead : false,
56-
text: c.latestMessage?.text ?? 'No message yet',
57-
handle: c.handle ?? memberNames.join(', '),
58-
name: c.handle ?? memberNames.join(', ')
36+
return {
37+
id: c.id,
38+
avatar,
39+
username: c.handle ?? memberNames.join(', '),
40+
unread: c.latestMessage ? !c.latestMessage.isRead : false,
41+
text: c.latestMessage?.text ?? 'No message yet',
42+
handle: c.handle ?? memberNames.join(', '),
43+
name: c.handle ?? memberNames.join(', ')
44+
};
5945
});
60-
});
61-
62-
messages = directMessages;
63-
groups = groupChats;
6446
} catch (error) {
6547
console.error('Failed to load messages:', error);
6648
}
@@ -103,39 +85,21 @@
10385
name: allMembers.find((m) => m.id === selectedMembers[0])?.name ?? 'New Chat',
10486
participantIds: [selectedMembers[0]]
10587
});
106-
await loadMessages(); // Refresh to include the new direct message
10788
} else {
10889
// Create group chat
109-
const groupMembers = allMembers.filter((m) => selectedMembers.includes(m.id));
90+
const groupMembers = allMembers.filter((m) => m.id === selectedMembers[0]);
11091
const groupName = groupMembers.map((m) => m.name ?? m.handle ?? m.ename).join(', ');
11192
11293
// Create group chat via API
113-
const response = await apiClient.post('/api/chats', {
94+
await apiClient.post('/api/chats', {
11495
name: groupName,
11596
participantIds: selectedMembers,
11697
isGroup: true
11798
});
118-
119-
// Add to local groups state
120-
const newGroup: GroupInfo = {
121-
id: response.data.id,
122-
name: groupName,
123-
avatar: '/images/group.png'
124-
};
125-
groups = [...groups, newGroup];
126-
127-
// Also add to messages for consistency
128-
const newMessage: MessageType = {
129-
id: response.data.id,
130-
avatar: newGroup.avatar,
131-
username: groupName,
132-
text: 'Group chat created',
133-
unread: false,
134-
name: groupName,
135-
handle: groupName
136-
};
137-
messages = [newMessage, ...messages];
13899
}
100+
101+
// Redirect to messages page with refresh
102+
window.location.href = '/messages';
139103
} catch (err) {
140104
console.error('Failed to create chat:', err);
141105
alert('Failed to create chat. Please try again.');
@@ -176,17 +140,7 @@
176140
{/each}
177141
{/if}
178142

179-
{#if groups.length > 0}
180-
<h3 class="text-md mb-2 mt-6 font-semibold text-gray-700">Groups</h3>
181-
{#each groups as group}
182-
<Group
183-
name={group.name || 'New Group'}
184-
avatar={group.avatar}
185-
unread={true}
186-
callback={() => goto(`/group/${group.id}`)}
187-
/>
188-
{/each}
189-
{:else if messages.length === 0}
143+
{#if messages.length === 0}
190144
<div class="w-full px-5 py-5 text-center text-sm text-gray-500">
191145
You don't have any messages yet. Start a Direct Message by searching a name.
192146
</div>
@@ -286,7 +240,7 @@
286240
<Button
287241
size="sm"
288242
variant="primary"
289-
callback={createChat}
243+
callback={() => createChat()}
290244
disabled={selectedMembers.length === 0}
291245
>
292246
{selectedMembers.length === 1 ? 'Start Chat' : 'Create Group'}

0 commit comments

Comments
 (0)