diff --git a/src/components/common/helpers/renderTextWithEntities.tsx b/src/components/common/helpers/renderTextWithEntities.tsx
index 61468b5d7..4a1f970e2 100644
--- a/src/components/common/helpers/renderTextWithEntities.tsx
+++ b/src/components/common/helpers/renderTextWithEntities.tsx
@@ -473,10 +473,11 @@ function processEntity({
{renderNestedMessagePart()}
);
- case ApiMessageEntityTypes.Hashtag:
+ case ApiMessageEntityTypes.Hashtag: {
+ const [tag, username] = entityContent.split('@');
return (
handleHashtagClick(tag, username)}
className="text-entity-link"
dir="auto"
data-entity-type={entity.type}
@@ -484,10 +485,12 @@ function processEntity({
{renderNestedMessagePart()}
);
- case ApiMessageEntityTypes.Cashtag:
+ }
+ case ApiMessageEntityTypes.Cashtag: {
+ const [tag, username] = entityContent.split('@');
return (
handleHashtagClick(tag, username)}
className="text-entity-link"
dir="auto"
data-entity-type={entity.type}
@@ -495,6 +498,7 @@ function processEntity({
{renderNestedMessagePart()}
);
+ }
case ApiMessageEntityTypes.Code:
return (
) {
getActions().sendBotCommand({ command: e.currentTarget.innerText });
}
-function handleHashtagClick(e: React.MouseEvent) {
- getActions().searchHashtag({ hashtag: e.currentTarget.innerText });
+function handleHashtagClick(hashtag?: string, username?: string) {
+ if (!hashtag) return;
+ if (username) {
+ getActions().openChatByUsername({
+ username,
+ onChatChanged: {
+ action: 'searchHashtag',
+ payload: { hashtag },
+ },
+ });
+ return;
+ }
+ getActions().searchHashtag({ hashtag });
}
function handleCodeClick(e: React.MouseEvent) {
diff --git a/src/global/actions/api/chats.ts b/src/global/actions/api/chats.ts
index 6f85db895..96c75bd82 100644
--- a/src/global/actions/api/chats.ts
+++ b/src/global/actions/api/chats.ts
@@ -1500,7 +1500,8 @@ addActionHandler('acceptChatInvite', async (global, actions, payload): Promise => {
const {
- username, messageId, commentId, startParam, startAttach, attach, threadId, originalParts, startApp, text,
+ username, messageId, commentId, startParam, startAttach, attach, threadId, originalParts, startApp,
+ text, onChatChanged,
tabId = getCurrentTabId(),
} = payload;
@@ -1542,6 +1543,10 @@ addActionHandler('openChatByUsername', async (global, actions, payload): Promise
text,
}, tabId,
);
+ if (onChatChanged) {
+ // @ts-ignore
+ actions[onChatChanged.action](onChatChanged.payload);
+ }
return;
}
}
@@ -1586,6 +1591,10 @@ addActionHandler('openChatByUsername', async (global, actions, payload): Promise
tabId,
focusMessageId: commentId,
});
+ if (onChatChanged) {
+ // @ts-ignore
+ actions[onChatChanged.action](onChatChanged.payload);
+ }
});
addActionHandler('togglePreHistoryHidden', async (global, actions, payload): Promise => {
diff --git a/src/global/types.ts b/src/global/types.ts
index 412b0ba4d..048c06b9c 100644
--- a/src/global/types.ts
+++ b/src/global/types.ts
@@ -1828,6 +1828,7 @@ export interface ActionPayloads {
startApp?: string;
text?: string;
originalParts?: (string | undefined)[];
+ onChatChanged?: CallbackAction;
} & WithTabId;
processBoostParameters: {
usernameOrId: string;