richMagnetLinks: Fix (#605)
- fixed non-matching regex - improved file name catching
This commit is contained in:
parent
140ef17abb
commit
d9ef5e31eb
1 changed files with 17 additions and 3 deletions
|
|
@ -10,7 +10,7 @@ import { EquicordDevs } from "@utils/constants";
|
||||||
import definePlugin from "@utils/types";
|
import definePlugin from "@utils/types";
|
||||||
|
|
||||||
export default definePlugin({
|
export default definePlugin({
|
||||||
authors: [EquicordDevs.cassie, EquicordDevs.mochienya],
|
authors: [EquicordDevs.cassie, EquicordDevs.mochienya, EquicordDevs.secp192k1],
|
||||||
name: "RichMagnetLinks",
|
name: "RichMagnetLinks",
|
||||||
description: "Renders magnet links like message links",
|
description: "Renders magnet links like message links",
|
||||||
patches: [
|
patches: [
|
||||||
|
|
@ -33,7 +33,7 @@ export default definePlugin({
|
||||||
order,
|
order,
|
||||||
requiredFirstCharacters: ["magnet:?"],
|
requiredFirstCharacters: ["magnet:?"],
|
||||||
match(content: string) {
|
match(content: string) {
|
||||||
return /magnet:\?\S+/.exec(content);
|
return /^magnet:\?[\w\W]+?(?=\s|$)/.exec(content);
|
||||||
},
|
},
|
||||||
parse(matchedContent: RegExpExecArray, _, parseProps: Record<string, any>) {
|
parse(matchedContent: RegExpExecArray, _, parseProps: Record<string, any>) {
|
||||||
// Don't run when typing/editing message
|
// Don't run when typing/editing message
|
||||||
|
|
@ -43,7 +43,21 @@ export default definePlugin({
|
||||||
};
|
};
|
||||||
|
|
||||||
const magnetLink = matchedContent[0];
|
const magnetLink = matchedContent[0];
|
||||||
const filename = (new URL(magnetLink)).searchParams.get("dn") ?? "unknown filename";
|
let filename = "unknown filename";
|
||||||
|
|
||||||
|
try {
|
||||||
|
const searchPart = magnetLink.split("?")[1];
|
||||||
|
if (searchPart) {
|
||||||
|
const params = new URLSearchParams(searchPart);
|
||||||
|
const dn = params.get("dn");
|
||||||
|
if (dn) {
|
||||||
|
filename = decodeURIComponent(dn.replace(/\+/g, " "));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
console.error("Failed to parse magnet link", err);
|
||||||
|
}
|
||||||
|
|
||||||
return { type: "magnet", filename, magnetLink };
|
return { type: "magnet", filename, magnetLink };
|
||||||
},
|
},
|
||||||
react({ magnetLink, filename }) {
|
react({ magnetLink, filename }) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue