From d3ece937e6e6e476610fc1d7eae085727d01ec95 Mon Sep 17 00:00:00 2001 From: TomatoCake <60300461+DEVTomatoCake@users.noreply.github.com> Date: Wed, 17 Jul 2024 12:31:09 +0200 Subject: [PATCH] Make channel ID optional when replying --- assets/schemas.json | Bin 19384340 -> 19589397 bytes .../#channel_id/messages/#message_id/index.ts | 9 ++++----- src/api/util/handlers/Message.ts | 8 ++++++++ src/util/schemas/MessageCreateSchema.ts | 2 +- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/assets/schemas.json b/assets/schemas.json index c5a5bedd07b2152b4e838a52b78d7044697bf592..00f86b3604f19db3f1eb55db5e1432de30d7d2a5 100644 GIT binary patch delta 23218 zcmds<`A<|=6vy*`fq645GpvK)Fvu=Yz$l=A0yY*&TT#KKVgVHwssgoYRjA_@u~r>B z=!r395Lt>FNLp@HWY8jIKn2kdQ!8K*V@U+mKtxe`hex;n;GX_C%MYJ?-}jw!?)TpJ z@-;gCSld~?(yLpvB5l>0bU6B5+5mL5dl>fjcVv_Pj?Z6Nd zsPV6Wel-bNmhPAjs!Y#R$Z9b2Jl6G21kqM&E^F%+ZXv3W!&4@k#-^=;QzI)bgKC+3 zI%qlr{a_%>ZW@g42^2wlj>zk{wWHSfqa~zDZJdn%5P|GO$OK(il$eu)y7HnMDJ--y z@T6&#$+KD{tjQ&2j(QBNO*~ONF<*j0*A^Z=+F;KUPjBAtItFpuc+#^@+KEEkm%m_8 zw2>!ay*5cG6s4@elWjdvlz~PbD65E!WY}9_5%>HV$I+`uOqKn6XT9w^ z8%Yx*SvLMASn4cgwbY&F-MM%Oy6}7%sQUd>pe~EHhPr)KGM&1~k~0I1T<)M%ivr<@ z+jb8au<>69I+=ecQC~}bR)fUs1xJJKB5Bk>SuKd`oe)1BvL1CvL9-)QuI-9aLRd!V z$E5$)kQ6LUrgW;z4VISmxR3z%sm(~dBIsX~5;|S-U;PQyKk;WIh7YO;M>CnW_08x) zGU$;-K~Z*CSgkT=S+LJKP#klznfbelQa17MCS;D3M825qj6zl#tWjW76s$B{J)Ir5 zoBbh=8o?L@SH-K@*Hsvv`(At)(8&A^HpU7mIrGJ&A#&azl3|Td;I~Lvt7{gXM}m61 zW}z8LdXqF0$vrm48xgU@m;L%B)C7y1PpXi3fh@n0EJHGO|0qw1!IG&A#imsvv4HNk z>0(Ywl6J3*MUt$Li28IT`%|q@4BpDt{)EH{WNAW%If{)}ny{MYuit>hulDU5cOe-P z$#hlr4HSMg@UXw$Wb*M0X}C6XuhJNzl7!Svttj9ddEM1KS58cB>Na1*MeNtP)eOnx zsH>YR=d4JFa=R1>F*)>Ujtl#&(aw8XdFa#UIKY4z2_uCCU+qNEIB3x*yDOy|EtDEE zAFIVMU}vou+kl~;=$?RAqRU^OWYFc6Xiq;WwKDl4;opVciMC|pWAzaGc{{yESxC z8Bd}!3uoY?4yY(PgUZZ1`-&Yg)ig99TfuaTByQ^2JcQ-r5O{%+Ig@ zS%*1K&ILzZWk0480+n@=x(XzhgVfBup2vQBR;lY79x~saX-L`3lS7>igX}w1VD(cP zd`08B(r2WdK{YSN9qQ(VyFo&at@}R*{Grw|R|T5A`ASgv@iLQMe$6;#ec-S4eM+7#}Vx7N@t3jJb9S< z#FG7I>x7v?Q~DH#2dJ*AdwTuY_kf^lsOK{@HH%-_U&wwAC(P?frO&@?N3z)a;@wLu zYYR|Ej9QTRs39LLH<%*lRWSRkW2S}bVYvckc0c++D=Qa~C0AazVHp$e43CJ}U&;$5 zms%LhNULAIo#Pbj+jneztarX-%88Kdd+4tZi?}W9hn9k}#s^YvS!;tcZA|H#3t?Ap zpyFRCn=$k@zIITXz1&_%+kyjZ7mLTS@cjW?0x{s|2Py>tKo delta 7258 zcmbW5eNdED7{%vxb{8(lvcQ6Zd@N$fr`k%W2!^6CmLZv81lnc^WuuWI)EFZoX$^rS z$gL?_s3eR~$mEisOQV_^g=QtbQNL^0cQzaL4Vj^&1?o>SSm|~}XGCG+3+c4F^4&<*m*er5Kg$Zq zZY8v!My8;4DN~);{q+;Nj)6GixQhXW){QC>P$jzNLt6zMTH;RF#|wy46ROGa!N<`g zOnKJM8zE~vS_m6bt6oH*+C)bmBukS}aiXJ~T`g1Fp<=9Nz-9a>kYbI;8NxOPySg@_ z(DE%)!m;w+IRj~Q5q88%qYEw!V)T{1!3lSBShWyO#%wbGI!7FaQ`Tv z6EuUNZRA_sjzFL~Gs84(!Iy!h;gFHAQx3D*fzA=oORKd0gboK(2hda(Yjt5?geR-l zX{%0Hz6v56->MKfrcTuV*QH!HmOk)z(9q!sr9JEWC$tBcC)`gfVd*jR9$;l~Xm;NG zOF-Phu(31335LpCBduU4`ISYTXs^->e@5Fe+5W|@upB4lF!W`}(jCCo5D{M5`s{XC z$+PLXpwkw2XYIARHo|NiKWuU%Ow^*6v7SK`k4 zsxsXGjaiO2+6k+_z0HU$a7gxgV1- zX99a&Kt1}r3cwR@)n5o((!YBm=82!p)q#7mu<|&xDy^s-D35#MP~%U<&Oq0hA)2^B zp=9OOpXI^EMq)olUM!-;D2Z1=<`>OlofhZ71T=5-^qmG2x*6W)C#Sn#>zc?K7q#62 zT2P2?%IydSG7*r@c=jn6ig!MTtg|?4E_=Ca%j4OL(|30^Tb?F=oKL4ehR#cXF#*+T zFWiOKEj8oUP(VrKp3-nB2!>WlmuJ9GRP^sSq|LoLA6A-S9JB+zqVOQ@0m~|KyP+Ej zfD7y1cM}i$`1M<*z(g12O$+%uv)l4k70}u}BYvnS{qT?^S+Ny8qtj88g}IN-f}y}y z@8caYy?opnonr=*GjKz75W}EWCQSld@uAd8497AQk_>qJnn#%-=a{v$33!tTs!nDr zwJ513W}fpN#X{;CzRX+Stgw~rX>XE`k}i*K^U}u>Tgl6ya<-L5fH`FTeSK`1y+r6h zuimpTPN_1CC)i1OurXg4vm2CF6Hiya@-{9KrETIObG*z6)* z24dpp@fKo8s+%k&0c8p*{ehdL04VdfS;PFr9uo5X+?=Mtba$@+R!&s7@0_=E1=s)& lkD!KSlc!0@cOW5HyV_SmZj^#@|JqNA1cKyL6PaL>`7ao|)baoT diff --git a/src/api/routes/channels/#channel_id/messages/#message_id/index.ts b/src/api/routes/channels/#channel_id/messages/#message_id/index.ts index c4d2e1e8..211cf997 100644 --- a/src/api/routes/channels/#channel_id/messages/#message_id/index.ts +++ b/src/api/routes/channels/#channel_id/messages/#message_id/index.ts @@ -1,17 +1,17 @@ /* Spacebar: A FOSS re-implementation and extension of the Discord.com backend. Copyright (C) 2023 Spacebar and Spacebar Contributors - + This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. - + You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ @@ -91,11 +91,10 @@ router.patch( } } else rights.hasThrow("SELF_EDIT_MESSAGES"); + // @ts-expect-error Something is wrong with message_reference here, TS complains since "channel_id" is optional in MessageCreateSchema const new_message = await handleMessage({ ...message, // TODO: should message_reference be overridable? - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore message_reference: message.message_reference, ...body, author_id: message.author_id, diff --git a/src/api/util/handlers/Message.ts b/src/api/util/handlers/Message.ts index 14efa95b..c3658668 100644 --- a/src/api/util/handlers/Message.ts +++ b/src/api/util/handlers/Message.ts @@ -117,6 +117,12 @@ export async function handleMessage(opts: MessageOptions): Promise { const guild = await Guild.findOneOrFail({ where: { id: channel.guild_id }, }); + + if (!opts.message_reference.guild_id) + opts.message_reference.guild_id = channel.guild_id; + if (!opts.message_reference.channel_id) + opts.message_reference.channel_id = opts.channel_id; + if (!guild.features.includes("CROSS_CHANNEL_REPLIES")) { if (opts.message_reference.guild_id !== channel.guild_id) throw new HTTPError( @@ -127,6 +133,8 @@ export async function handleMessage(opts: MessageOptions): Promise { "You can only reference messages from this channel", ); } + + message.message_reference = opts.message_reference; } /** Q: should be checked if the referenced message exists? ANSWER: NO otherwise backfilling won't work **/ diff --git a/src/util/schemas/MessageCreateSchema.ts b/src/util/schemas/MessageCreateSchema.ts index 495e2ebd..014f6c87 100644 --- a/src/util/schemas/MessageCreateSchema.ts +++ b/src/util/schemas/MessageCreateSchema.ts @@ -42,7 +42,7 @@ export interface MessageCreateSchema { }; message_reference?: { message_id: string; - channel_id: string; + channel_id?: string; guild_id?: string; fail_if_not_exists?: boolean; };