Edit typing... indicator, loading older message.
This commit is contained in:
@@ -562,7 +562,7 @@ export class ConversationsService {
|
||||
let preview = lastMsg
|
||||
? String(lastMsg.content ?? lastMsg.text ?? lastMsg.body ?? '').trim()
|
||||
: '';
|
||||
if (/^__MENTO_HIDE__:/i.test(preview) || /MENTO_DEL/i.test(preview) || /^__MENTO_PIN__:/i.test(preview) || /^__MENTO_UNPIN__$/i.test(preview)) {
|
||||
if (/^__MENTO_HIDE__:/i.test(preview) || /MENTO_DEL/i.test(preview) || /^__MENTO_PIN__:/i.test(preview) || /^__MENTO_UNPIN__$/i.test(preview) || /^__MENTO_TYPING__:/i.test(preview)) {
|
||||
preview = '';
|
||||
}
|
||||
if (lastType === 'image' || lastType === 'photo' || lastType === 'img') {
|
||||
@@ -697,16 +697,54 @@ export class ConversationsService {
|
||||
});
|
||||
if (!room) throw new NotFoundException('گفتگو پیدا نشد');
|
||||
|
||||
let rows = await this.prisma.conversationRoomMember.findMany({
|
||||
where: { organizationId, externalRoomId: roomId },
|
||||
});
|
||||
// همیشه سازنده + کاربر فعلی را در لیست عضو داشته باش (اتاقهای قدیمی بدون ردیف)
|
||||
const seedIds: Array<{ userId: string; role: string }> = [];
|
||||
if (room.createdByUserId) {
|
||||
seedIds.push({ userId: room.createdByUserId, role: 'admin' });
|
||||
}
|
||||
if (!seedIds.some((s) => s.userId === userId)) {
|
||||
const orgAdmin = role === 'owner' || role === 'admin';
|
||||
seedIds.push({
|
||||
userId,
|
||||
role: orgAdmin || room.createdByUserId === userId ? 'admin' : 'member',
|
||||
});
|
||||
}
|
||||
if (seedIds.length) {
|
||||
try {
|
||||
await this.prisma.conversationRoomMember.createMany({
|
||||
data: seedIds.map((s) => ({
|
||||
organizationId,
|
||||
externalRoomId: roomId,
|
||||
userId: s.userId,
|
||||
role: s.role,
|
||||
})),
|
||||
skipDuplicates: true,
|
||||
});
|
||||
} catch (e) {
|
||||
const code = (e as { code?: string })?.code;
|
||||
if (code === 'P2021' || code === 'P2022') {
|
||||
throw new BadRequestException(
|
||||
'جدول اعضای گفتگو هنوز migrate نشده است. از apps/api دستور prisma migrate deploy را اجرا کنید.',
|
||||
);
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
// اتاقهای قدیمی بدون ردیف عضو — حداقل سازنده را ادمین نشان بده
|
||||
if (!rows.length && room.createdByUserId) {
|
||||
await this.seedRoomMembers(organizationId, roomId, room.createdByUserId, []);
|
||||
let rows: Array<{ userId: string; role: string }> = [];
|
||||
try {
|
||||
rows = await this.prisma.conversationRoomMember.findMany({
|
||||
where: { organizationId, externalRoomId: roomId },
|
||||
select: { userId: true, role: true },
|
||||
});
|
||||
} catch (e) {
|
||||
const code = (e as { code?: string })?.code;
|
||||
if (code === 'P2021' || code === 'P2022') {
|
||||
throw new BadRequestException(
|
||||
'جدول اعضای گفتگو هنوز migrate نشده است. از apps/api دستور prisma migrate deploy را اجرا کنید.',
|
||||
);
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
|
||||
const userIds = rows.map((r) => r.userId);
|
||||
|
||||
Reference in New Issue
Block a user