1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
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
|