From 3591aea8d5e4332b13011b944ee6c06f3cd79c45 Mon Sep 17 00:00:00 2001
From: Alexander Zinchuk
Date: Fri, 16 Sep 2022 18:28:51 +0200
Subject: [PATCH] Chat List: Allow showing chats with no messages
---
src/components/left/main/Chat.scss | 4 ++++
src/components/left/main/Chat.tsx | 14 ++++++++------
src/util/folderManager.ts | 2 +-
3 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/src/components/left/main/Chat.scss b/src/components/left/main/Chat.scss
index 7212feaab..5c6eea5e9 100644
--- a/src/components/left/main/Chat.scss
+++ b/src/components/left/main/Chat.scss
@@ -29,6 +29,10 @@
}
}
+ &:last-of-type {
+ padding-bottom: 0.5rem;
+ }
+
@media (max-width: 600px) {
&.selected {
--background-color: var(--color-chat-hover) !important;
diff --git a/src/components/left/main/Chat.tsx b/src/components/left/main/Chat.tsx
index 0e662005b..5a660ccd6 100644
--- a/src/components/left/main/Chat.tsx
+++ b/src/components/left/main/Chat.tsx
@@ -135,7 +135,7 @@ const Chat: FC = ({
const { lastMessage, typingStatus } = chat || {};
const isAction = lastMessage && isActionMessage(lastMessage);
- useEnsureMessage(chatId, isAction ? lastMessage!.replyToMessageId : undefined, actionTargetMessage);
+ useEnsureMessage(chatId, isAction ? lastMessage.replyToMessageId : undefined, actionTargetMessage);
const mediaThumbnail = lastMessage && !getMessageSticker(lastMessage)
? getMessageMediaThumbDataUri(lastMessage)
@@ -288,7 +288,7 @@ const Chat: FC = ({
:
>
)}
- {renderSummary(lang, lastMessage!, observeIntersection, mediaBlobUrl || mediaThumbnail, isRoundVideo)}
+ {renderSummary(lang, lastMessage, observeIntersection, mediaBlobUrl || mediaThumbnail, isRoundVideo)}
);
}
@@ -391,13 +391,13 @@ function renderSummary(
export default memo(withGlobal(
(global, { chatId }): StateProps => {
const chat = selectChat(global, chatId);
- if (!chat || !chat.lastMessage) {
+ if (!chat) {
return {};
}
- const { senderId, replyToMessageId, isOutgoing } = chat.lastMessage;
+ const { senderId, replyToMessageId, isOutgoing } = chat.lastMessage || {};
const lastMessageSender = senderId ? selectUser(global, senderId) : undefined;
- const lastMessageAction = getMessageAction(chat.lastMessage);
+ const lastMessageAction = chat.lastMessage ? getMessageAction(chat.lastMessage) : undefined;
const actionTargetMessage = lastMessageAction && replyToMessageId
? selectChatMessage(global, chat.id, replyToMessageId)
: undefined;
@@ -423,7 +423,9 @@ export default memo(withGlobal(
canScrollDown: isSelected && messageListType === 'thread',
canChangeFolder: (global.chatFolders.orderedIds?.length || 0) > 1,
lastSyncTime: global.lastSyncTime,
- ...(isOutgoing && { lastMessageOutgoingStatus: selectOutgoingStatus(global, chat.lastMessage) }),
+ ...(isOutgoing && chat.lastMessage && {
+ lastMessageOutgoingStatus: selectOutgoingStatus(global, chat.lastMessage),
+ }),
...(privateChatUserId && {
user: selectUser(global, privateChatUserId),
userStatus: selectUserStatus(global, privateChatUserId),
diff --git a/src/util/folderManager.ts b/src/util/folderManager.ts
index 5192528fd..f9909414f 100644
--- a/src/util/folderManager.ts
+++ b/src/util/folderManager.ts
@@ -429,7 +429,7 @@ function buildChatSummary(
return {
id,
type,
- isListed: Boolean(lastMessage && !isRestricted && !isNotJoined && !migratedTo),
+ isListed: Boolean(!isRestricted && !isNotJoined && !migratedTo),
isArchived: folderId === ARCHIVED_FOLDER_ID,
isMuted: selectIsChatMuted(chat, notifySettings, notifyExceptions),
isUnread: Boolean(unreadCount || unreadMentionsCount || hasUnreadMark),