diff --git a/src/lib/appManagers/appImManager.ts b/src/lib/appManagers/appImManager.ts index 119a3797..d34c8db2 100644 --- a/src/lib/appManagers/appImManager.ts +++ b/src/lib/appManagers/appImManager.ts @@ -308,12 +308,13 @@ export class AppImManager { } }); + // Support old t.me/joinchat/asd and new t.me/+asd this.addAnchorListener<{pathnameParams: ['joinchat', string]}>({ name: 'joinchat', callback: ({pathnameParams}) => { const link: InternalLink = { _: INTERNAL_LINK_TYPE.JOIN_CHAT, - invite: pathnameParams[1] + invite: pathnameParams[1] || decodeURIComponent(pathnameParams[0]).slice(1) }; this.processInternalLink(link); diff --git a/src/lib/richtextprocessor.ts b/src/lib/richtextprocessor.ts index 46d8d0e4..45eafc33 100644 --- a/src/lib/richtextprocessor.ts +++ b/src/lib/richtextprocessor.ts @@ -847,6 +847,12 @@ namespace RichTextProcessor { url = 'tg://unsafe_url?url=' + encodeURIComponent(url); } else */if((tgMeMatch = url.match(/^(?:https?:\/\/)?t(?:elegram)?\.me\/(.+)/))) { const fullPath = tgMeMatch[1]; + + if(/^\W/.test(fullPath)) { + onclick = 'joinchat'; + return {url, onclick}; + } + const path = fullPath.split('/'); switch(path[0]) { case 'joinchat':