summary refs log tree commit diff
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2025-09-22 05:43:04 +0200
committerRory& <root@rory.gay>2025-09-22 05:43:04 +0200
commitb92321608d8e2239045d79be00bb7ddbcaecda6f (patch)
tree63189ed25d420f783a3f6d91e909f0664f411bec
parentWe can figure this out later... (diff)
downloadOOYE-module-b92321608d8e2239045d79be00bb7ddbcaecda6f.tar.xz
does this work?
-rw-r--r--0001-fox.patch102
-rw-r--r--default.nix2
2 files changed, 104 insertions, 0 deletions
diff --git a/0001-fox.patch b/0001-fox.patch
new file mode 100644

index 0000000..ffda811 --- /dev/null +++ b/0001-fox.patch
@@ -0,0 +1,102 @@ +From 3ae6cca154ced7cbfe74abb03d5a633461bc5c63 Mon Sep 17 00:00:00 2001 +From: MathMan05 <mathmanrm@gmail.com> +Date: Sun, 21 Sep 2025 19:14:11 -0500 +Subject: [PATCH] fox + +--- + src/d2m/converters/pins-to-list.js | 47 +++++++++++++++++------------- + 1 file changed, 27 insertions(+), 20 deletions(-) + +diff --git a/src/d2m/converters/pins-to-list.js b/src/d2m/converters/pins-to-list.js +index 3e890ea..a4b7fe7 100644 +--- a/src/d2m/converters/pins-to-list.js ++++ b/src/d2m/converters/pins-to-list.js +@@ -1,31 +1,38 @@ + // @ts-check + +-const {select} = require("../../passthrough") ++const { select } = require("../../passthrough"); + + /** +- * @param {import("discord-api-types/v10").RESTGetAPIChannelPinsResult} pins ++ * @param {import("discord-api-types/v10").RESTGetAPIChannelMessagesPinsResult} pins + * @param {{"m.room.pinned_events/"?: {pinned?: string[]}}} kstate + */ + function pinsToList(pins, kstate) { +- let alreadyPinned = kstate["m.room.pinned_events/"]?.pinned || [] ++ let alreadyPinned = kstate["m.room.pinned_events/"]?.pinned || []; + +- // If any of the already pinned messages are bridged messages then remove them from the already pinned list. +- // * If a bridged message is still pinned then it'll be added back in the next step. +- // * If a bridged message was unpinned from Discord-side then it'll be unpinned from our side due to this step. +- // * Matrix-only unbridged messages that are pinned will remain pinned. +- alreadyPinned = alreadyPinned.filter(event_id => { +- const messageID = select("event_message", "message_id", {event_id}).pluck().get() +- return !messageID || pins.find(m => m.id === messageID) // if it is bridged then remove it from the filter +- }) ++ // If any of the already pinned messages are bridged messages then remove them from the already pinned list. ++ // * If a bridged message is still pinned then it'll be added back in the next step. ++ // * If a bridged message was unpinned from Discord-side then it'll be unpinned from our side due to this step. ++ // * Matrix-only unbridged messages that are pinned will remain pinned. ++ alreadyPinned = alreadyPinned.filter((event_id) => { ++ const messageID = select("event_message", "message_id", { event_id }) ++ .pluck() ++ .get(); ++ return !messageID || pins.items.find((m) => m.message.id === messageID); // if it is bridged then remove it from the filter ++ }); + +- /** @type {string[]} */ +- const result = [] +- for (const message of pins) { +- const eventID = select("event_message", "event_id", {message_id: message.id, part: 0}).pluck().get() +- if (eventID && !alreadyPinned.includes(eventID)) result.push(eventID) +- } +- result.reverse() +- return alreadyPinned.concat(result) ++ /** @type {string[]} */ ++ const result = []; ++ for (const { message } of pins.items) { ++ const eventID = select("event_message", "event_id", { ++ message_id: message.id, ++ part: 0, ++ }) ++ .pluck() ++ .get(); ++ if (eventID && !alreadyPinned.includes(eventID)) result.push(eventID); ++ } ++ result.reverse(); ++ return alreadyPinned.concat(result); + } + +-module.exports.pinsToList = pinsToList ++module.exports.pinsToList = pinsToList; +-- +2.51.0 + +ssageID = select("event_message", "message_id", { event_id }) ++ .pluck() ++ .get(); ++ return !messageID || pins.items.find((m) => m.message.id === messageID); // if it is bridged then remove it from the filter ++ }); + +- /** @type {string[]} */ +- const result = [] +- for (const message of pins) { +- const eventID = select("event_message", "event_id", {message_id: message.id, part: 0}).pluck().get() +- if (eventID && !alreadyPinned.includes(eventID)) result.push(eventID) +- } +- result.reverse() +- return alreadyPinned.concat(result) ++ /** @type {string[]} */ ++ const result = []; ++ for (const { message } of pins.items) { ++ const eventID = select("event_message", "event_id", { ++ message_id: message.id, ++ part: 0, ++ }) ++ .pluck() ++ .get(); ++ if (eventID && !alreadyPinned.includes(eventID)) result.push(eventID); ++ } ++ result.reverse(); ++ return alreadyPinned.concat \ No newline at end of file diff --git a/default.nix b/default.nix
index 20385a4..ec2439d 100644 --- a/default.nix +++ b/default.nix
@@ -17,6 +17,8 @@ buildNpmPackage { npmDepsHash = "sha256-TzXkgBzGYegtmhC2ZaBpyNBKmezO+AHM/jUa9HN+IsQ="; dontNpmBuild = true; + patches = [ ./0001-fox.patch ]; + nativeBuildInputs = [ makeWrapper ]; installPhase =