i dont even know what this PR is supposed to be about anymore, everyone lost the plot somewhere in the middle of act 2 #74

Open
Guzio wants to merge 128 commits from Guzio/out-of-your-element:mergable-fr-fr into main
2 changed files with 14 additions and 9 deletions
Showing only changes of commit aedd30ab4a - Show all commits

Update "m.relates_to" type definition @ types.d.ts

* To better reflect reality ("m.in_reply_to" will not always be present - it's not (always?) found on "rel_type":"m.replace" relation-events)

* To support "rel_type":"m.replace" relation-events (added "m.replace" option to existing key "rel_type" and a new "is_falling_back" key)

AFFECTED TYPES: M_Room_Message, M_Room_Message_File, M_Room_Message_Encrypted_File

BREAKS: Nothing, as .d.ts files don't affect buisness logic. In terms of lint errors: Marking "m.in_reply_to" as optional is indeed technically a "breaking change" (TypeScript may complain about „is probably undefined” in places where it didn't before), but from early "testing" (ie. looking at VSCode's errors tab), it doesn't seem like anything broke, as no file that imports any of those 3 types (Or their Outer_ counterparts) has „lit up” with errors (unless I missed something). There was one type error found in m2d/converters/event-to-message.js, at line 1009, but that seemed unrelated to types.d.ts - nevertheless, that error was also corrected in this commit, by adding proper type annotations somewhere else in the affected file.
Guzio 2026-02-19 17:48:32 +00:00

View file

@ -471,6 +471,7 @@ async function checkWrittenMentions(content, senderMxid, roomID, guild, di) {
// @ts-ignore - typescript doesn't know about indices yet
content: content.slice(0, writtenMentionMatch.indices[1][0]-1) + `@everyone` + content.slice(writtenMentionMatch.indices[1][1]),
ensureJoined: [],
/**@type {DiscordTypes.AllowedMentionsTypes[]}*/ // @ts-ignore - TypeScript is for whatever reason conviced that "everyone" cannot be assigned to AllowedMentionsTypes, but if you „Go to Definition”, you'll see that "everyone" is a valid enum value.
allowedMentionsParse: ["everyone"]
}
}
@ -543,6 +544,7 @@ async function getL1L2ReplyLine(called = false) {
async function eventToMessage(event, guild, channel, di) {
let displayName = event.sender
let avatarURL = undefined
/**@type {DiscordTypes.AllowedMentionsTypes[]}*/ // @ts-ignore - TypeScript is for whatever reason conviced that neither "users" no "roles" cannot be assigned to AllowedMentionsTypes, but if you „Go to Definition”, you'll see that both are valid enum values.
const allowedMentionsParse = ["users", "roles"]
/** @type {string[]} */
let messageIDsToEdit = []

21
src/types.d.ts vendored
View file

@ -190,11 +190,12 @@ export namespace Event {
format?: "org.matrix.custom.html"
formatted_body?: string,
"m.relates_to"?: {
"m.in_reply_to": {
event_id?: string
is_falling_back?: bool
"m.in_reply_to"?: {
event_id: string
}
rel_type?: "m.replace"
event_id?: string
rel_type?: "m.replace"|"m.thread"
}
}
@ -210,11 +211,12 @@ export namespace Event {
info?: any
"page.codeberg.everypizza.msc4193.spoiler"?: boolean
"m.relates_to"?: {
"m.in_reply_to": {
event_id?: string
is_falling_back?: bool
"m.in_reply_to"?: {
event_id: string
}
rel_type?: "m.replace"
event_id?: string
rel_type?: "m.replace"|"m.thread"
}
}
@ -246,11 +248,12 @@ export namespace Event {
},
info?: any
"m.relates_to"?: {
"m.in_reply_to": {
event_id?: string
is_falling_back?: bool
"m.in_reply_to"?: {
event_id: string
}
rel_type?: "m.replace"
event_id?: string
rel_type?: "m.replace"|"m.thread"
}
}