forked from abner/for-legacy-web
Add shift+click to channel links
This commit is contained in:
@@ -140,16 +140,33 @@ export default function Renderer({ content, disallowBigEmoji }: MarkdownProps) {
|
||||
(ev: MouseEvent) => {
|
||||
if (ev.currentTarget) {
|
||||
const element = ev.currentTarget as HTMLAnchorElement;
|
||||
if (element.dataset.type === 'mention' && ev.shiftKey) {
|
||||
internalEmit(
|
||||
"MessageBox",
|
||||
"append",
|
||||
`<@${element.dataset.mentionId}>`,
|
||||
"mention",
|
||||
);
|
||||
|
||||
ev.preventDefault()
|
||||
} else if (openLink(element.href)) {
|
||||
if (ev.shiftKey) {
|
||||
switch (element.dataset.type) {
|
||||
case "mention": {
|
||||
internalEmit(
|
||||
"MessageBox",
|
||||
"append",
|
||||
`<@${element.dataset.mentionId}>`,
|
||||
"mention",
|
||||
);
|
||||
ev.preventDefault()
|
||||
return
|
||||
}
|
||||
case "channel_mention": {
|
||||
internalEmit(
|
||||
"MessageBox",
|
||||
"append",
|
||||
`<#${element.dataset.mentionId}>`,
|
||||
"channel_mention",
|
||||
);
|
||||
ev.preventDefault()
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (openLink(element.href)) {
|
||||
ev.preventDefault();
|
||||
}
|
||||
}
|
||||
@@ -177,6 +194,7 @@ export default function Renderer({ content, disallowBigEmoji }: MarkdownProps) {
|
||||
element.removeAttribute("target");
|
||||
|
||||
const link = determineLink(element.href);
|
||||
console.log(link)
|
||||
switch (link.type) {
|
||||
case "profile": {
|
||||
element.setAttribute(
|
||||
@@ -189,6 +207,19 @@ export default function Renderer({ content, disallowBigEmoji }: MarkdownProps) {
|
||||
)
|
||||
break;
|
||||
}
|
||||
case "navigate": {
|
||||
if (link.navigation_type === 'channel') {
|
||||
element.setAttribute(
|
||||
"data-type",
|
||||
"channel_mention",
|
||||
);
|
||||
element.setAttribute(
|
||||
"data-mention-id",
|
||||
link.channel_id
|
||||
)
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "external": {
|
||||
element.setAttribute("target", "_blank");
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user