From d44bed03798fb7603da18ce6f1d4082c3998a52b Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 10 Sep 2025 11:42:43 -0400 Subject: [PATCH] Fix archive handling of mixed error send statuses, add more tests. --- ..._standard_message_group_text_only_00.binproto | Bin 0 -> 1084 bytes ..._standard_message_group_text_only_01.binproto | Bin 0 -> 1087 bytes ..._standard_message_group_text_only_02.binproto | Bin 0 -> 1098 bytes ..._standard_message_group_text_only_03.binproto | Bin 0 -> 1113 bytes ..._standard_message_group_text_only_04.binproto | Bin 0 -> 1109 bytes ..._standard_message_group_text_only_05.binproto | Bin 0 -> 1087 bytes ..._standard_message_group_text_only_06.binproto | Bin 0 -> 1107 bytes ..._standard_message_group_text_only_07.binproto | Bin 0 -> 1121 bytes ..._standard_message_group_text_only_08.binproto | Bin 0 -> 1084 bytes ..._standard_message_group_text_only_09.binproto | Bin 0 -> 1107 bytes ..._standard_message_group_text_only_10.binproto | Bin 0 -> 1119 bytes ..._standard_message_group_text_only_11.binproto | Bin 0 -> 1087 bytes ..._standard_message_group_text_only_12.binproto | Bin 0 -> 1118 bytes ..._standard_message_group_text_only_13.binproto | Bin 0 -> 1114 bytes ..._standard_message_group_text_only_14.binproto | Bin 0 -> 1096 bytes .../backup/v2/ArchiveImportExportTests.kt | 5 +++++ .../v2/exporters/ChatItemArchiveExporter.kt | 2 +- .../v2/importer/ChatItemArchiveImporter.kt | 2 +- .../securesms/database/GroupReceiptTable.kt | 1 + .../messagedetails/MessageDetailsRepository.java | 2 ++ 20 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_00.binproto create mode 100644 app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_01.binproto create mode 100644 app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_02.binproto create mode 100644 app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_03.binproto create mode 100644 app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_04.binproto create mode 100644 app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_05.binproto create mode 100644 app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_06.binproto create mode 100644 app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_07.binproto create mode 100644 app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_08.binproto create mode 100644 app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_09.binproto create mode 100644 app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_10.binproto create mode 100644 app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_11.binproto create mode 100644 app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_12.binproto create mode 100644 app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_13.binproto create mode 100644 app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_14.binproto diff --git a/app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_00.binproto b/app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_00.binproto new file mode 100644 index 0000000000000000000000000000000000000000..6b761fb1c8832be238b1d7f7a2e521b9a30d8995 GIT binary patch literal 1084 zcmaJd<{%RMH}|Go44)OwmaNbD}_U7MNbPw>46Y|g3*gIQ%k6fO49w)(?Terh;?;EO~S+X$M5@{bH4LC-}lQQf$sf& z?(A@~8Xay~++VXXaPi^9>crRA^3EsVQSlR=6`T8K=g&E__GPmsHbWGbI|bhDLk3pQ z>b3t6$s@!dP#=Io9Dbzf(;ZWG*6F&F$?caqPjvQ(U-uXW9Kqs2%>Sa7iLr`SZtZ&B z=VMb-)u|NX?WNwwldjQ3u(iURIaJ%h7Y^^;5nri%r|g~mlRe7N+%33(JvB|;dz(=8 zW^etXl56B9sft#fA(b&EQs`r= zV1)|IX6ehI0t9nG4{231Ou(7IY64pp*Bq%Wq3ymOLLZMM4 zQ(_@3L^28zv^W{9VB{ojz-BONQl^QcXz4=4QsXMwK4A6$DQ9+qv`-_V6iS z#xgiMHt;I6$c&z^_KzDDVwqF0@m8Y1CHNfWvxxWpT}`>J{v*b3#984w)#EI>ny@7} zy|1M2K}+14xRnh6Ml7s_2y4NjqsM58WN=g))*`2ujT;u3G!ZLd7Tvs8QZm2K>FT~3 z`?KTT!29+|7S(M*sH&)8F9**B(`)t*YzsgG;705aF#Ca2FuOS|S)69S>_E z(av$hLM-RXMW;2&EIQm?(Jkr8SSZ|R+M3p;yIKFXdpKCpYS=t+Q@rP1>5sSZ8LO5Q z2Ji-u8L>yev;!HVzAHI7Vu=4qXwaSlW-6u3;dN+q5IQ9FK!-*jSI>0#d>*ecDTxno zE{~IEZK5lQ+r;^}a(08qu2qmYjjQB(Fi!d7nZKT(@lke+Q|RAkBWL!9jp&tR^Ry^Z ztsoV2OdjNGawQ;FHGY0w-*x;W7*UhCM&3BX$>q(LmR#B)~VgP+g*Fu3W*9T z%^q52RP-(sMh}7r6pCJynOZ?*RFdu=vnNFfMXakUY7!p4KYriuob#RE`MzHs4Q$)@ zlP7x8b!cDx^p5Iv!L#=h_fLFvDgV@XGA?=0(;{of*oEVcuXu4;KO{$%vn3I`{m5iY zGo~5-A<}z^55T+y1_@+U=>09ryt&8D97%6H*L=A7vHW$XsnZ!Q`alGpw{Zz}*)FVD zjs1ROW~MHaL3qtl-^0O|SSs95YR&yz(}W9q%C{z$Y2Rqu#{M)O;8@`XoF<-FhL_)@ z__leQKJjY3+M-l3sB@Gu=7|h?*WkQ6B|~RClhIt8+qip90oDt}lNPktUbolfwcrt) zYH`7A9;{a7%fJJI36KU^m7^>mSio)p$6UyVVps`I@IVl@0F(iF1mbAW5(E+HMWliv zeMqGxB1DAdG&C4UI$p!6Y0^ZD;&il1pTw}rg_xxydDSl9b^@*Dwt=$G3~eEZnZ%ap zDd74uBs$pnGBVAIo-GRu7&dB_Bs#F2DsYK@r*{n19oQaP;OeL{f1^%_SD44r;)~-q zhDWv+x8JKzTAnn&4!}%AwNOzlM0|WdEwK!VYNA@y?5qL9rcx$ir>wFY`xGUU+a*`) z#UVeN?sRrH4z}?(MX|E9+IT*EGCZfcqH}W)>VPy8dx5I}TEp$=?F(@q`fG_{NOUNw zg+|*33>%d#cxA~RXO*39pX^rjhBjqgOSxX#)!Gv-Z7^*}EJ^mGsShA1p=M?t$+1Q!=VPkrw*gPwa z)@f)Bn~)EM`b7#*^P!KgYOiHjSo%x#{+d0RZ0N$HvdbnOY#CfSlj@KJpAR`@7xv1? egT107Ac;Oy(wnXi2-u6=s{$_Mk|pf(i})9gnk%~i literal 0 HcmV?d00001 diff --git a/app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_02.binproto b/app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_02.binproto new file mode 100644 index 0000000000000000000000000000000000000000..afd681f42eda9be4ffc100c42598805c24cb69d3 GIT binary patch literal 1098 zcmea}U=+CVYr*{QhEfXsyKEj#$*x#(ig%Lc-3T4SDnN=53x$z@T~eE!J@?C1T;m9#SLhTl_rk?tZezH8@o%F+$t_T-1YmD}2wTN(wQD2D?ZwdU*l8%qYRAz^K7!z-Tc+#)&b} zi80BEG1-GLfH8tGfiZ)zfU$zHfswI;k!cnqI|rjE0|Uc<5Q_=O`VVF?i!%IY_|GB4 z#=)q?#KFxb#KOU3#2_Oi#lfs3#w7sMfC8kLB$&Gxh1wZ8ScIAwf%05}=NK3q7#bj| z7=_S9m=vZyy7S-KOW}HKDP9!C>X?(6oSMWMoSRvaQKZQFs zX5?TKY6FD}!zo5|x1fkHDNKjBg+rkUFN$JyPAtmLNn-cP&&Vsz&jY&0%{+7a>MDzU zI{TNuIRE`|&2FP|-ZJHaqcOiIg6;qeLPWjsT<9 zY(^n*E>Yi99R+Yi=qLcgKt};=xs+T+Nl8JmmA-yzMPhD2PO4sVey)CESz<|IkzQ6o zx)vJ;lK_(hivgpR2rSJY(u4pLSQIU#2td`M#u-c$C9HtS+=87$ij9L!fG2=4UMUvH zV3b(%{_gU9#$MW7yc{e7JqIt`Ut;RT#K8#UvI^Wev94{pi4us*!olXmAaLk+$G#cH pQOZJ!T=GSk#ihjxiK&I9sS2q%iAniIiAAX;3YmFjsd<@2sQ_jjD(L_K literal 0 HcmV?d00001 diff --git a/app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_03.binproto b/app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_03.binproto new file mode 100644 index 0000000000000000000000000000000000000000..7410d0614e507a53a415f35d50defb6906bf2fcb GIT binary patch literal 1113 zcmaJ;87`Qp9&?=rOY^j~oynA-JVv{Q-ENJyS zYp*M9RfY?OMdhU@%%B9Vv7VgrVUoe@-hikB@9snI~?X!b>HYyE;y$9~sG_N4kR zcQ3f8VeIaXGYgA9kWc6bGhTh-HEEkf_2$zbHg{5 z_H^ZzESa`2j_SbRV*Uf68E}^MI(2f|5Pt%Au>T3dFwR`6I7r_h9EA43LHZuIjtWGh z;fO0QPl?N+a8MC_dMHm`D@Wx@adp^lH(|shi_r`8m5HWnv5*oWE7gcksZ@v@^T!m5T4SDnN=53x$z@T~eE!J@?C1T;m9#SLhTl_rk?tZezH8@o%F+$t_T-1YmD}2wTN(wQD2D?ZwdU*l8%qYRAz^K7!z-Tc+#)&b} zi80BEG1-GLfH8tGfiZ)zfU$zHfswI;k!cnqI|rjE0|Uc<5Q_=O`VVF?i!%IY_|GB4 z#=)q?#KFxb#KOU3#2_Oi#lfs3#w7sMfC8kLB$&Gxh1wZ8ScIAwf%05}=NK3q7#bj| z7=_S9m=vZyy7S-KOW}HKDP9!C>X?(6oSMWMoSRvaQKZQFs zX5?TKY6FD}!zo5|x1fkHDNKjBg+rkUFN$JyPAtmLNn-cP&&Vsz&jY&0%{+7a>MDzU zI{TNuIRE`|&2FP|-ZJHaqcOiIg6;qeLPWjsT<9 zY(^n*E>Yi99R+Yi=qLcgKt};=xs+T+Nl8JmmA-yzMPhD2PO4sVey)CESz<|IkzQ6o zx)vJ;lK_(hivgpR2rSJY(u4pLSQIU#2td`M#u-c$C9HtS+=87$ij9L!fG2=4ODO}$ zV3b(*{_gU9#$IY%Y#c1Wq{|4TS-qGzn7DX>(!XCES^vSn2q-LY+sDgetyE?58n literal 0 HcmV?d00001 diff --git a/app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_05.binproto b/app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_05.binproto new file mode 100644 index 0000000000000000000000000000000000000000..457f3c8b6a2c77e624eb87a91115144cc3fedfd6 GIT binary patch literal 1087 zcmaJSIb4L4tY2 zb6yi~vL%a5BqFh7;;}GnM1lzxTmSJKk+85x-K~T!vXd_--}!yt`Ofcr->-lLzV*lH zQ(c)N-g|9Id*zz&`FjHojDK~h@XS~$!8qXQB76Jj`D0Ele{tE6VpEhEZkc$4ILn-2 z&M^H0WcC1^z`X|!OVs|_kGHIIW}i4$mDzNm`B?K~Trro!WYvRK6 zx6aw{Sx*~it6IfG+tf0a@f`k8@4AzdEt=0|H&@SU+MQoS3{uI2c`c6DZ8ZfgWT>E7 zSTs`)cDwpz&;y2XkO6u7hFd|hg3}76v!M`5U zo<@hFD9Q?27EBbIs1<0I%0j~hk<}PdIbOXGw?s;>*$KjSU}<3ssBvyk3qsS-rdSpT zeGv*D>UbHQY{$=*hWa%JGuqHSWt`$6XSvs6Z>$9M<{$a#)amm_iGM~IuR#hSG**kGMU)s_B^ah z`FX#w<6Tp-Lw{42_mx+gFGfyB@+)_BYz#vUP!_ZYgk8XDg>5~3LHD39mpFvNM`B!9 zyro}rFf$~-;&vw36_+=lcvU{ON%Ga&4S5Y|*Q?(=?244vXRRApX7n{K>3(ChEuLB& zrfNWAK@UJ^0yas!ttvTgi2ph8U^))M5KdP>(s1t}(y-ctG~D~RIKmYS`T~~pbP|?4 zJ~uI!DxP$yObSYV^J?EJla{4;N>68iW$+)({M7_c^`d>0!vD^VpV=QYu2-te^AcE5 z%WCc2_hU&2|`tQQSzs c90&!lMAn7~CT_{8_$5CHV%b|pyt1GC0(lN6XaE2J literal 0 HcmV?d00001 diff --git a/app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_06.binproto b/app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_06.binproto new file mode 100644 index 0000000000000000000000000000000000000000..6ca82975b038bd882a6be8c6252af2bf0d461485 GIT binary patch literal 1107 zcmaJ}r0!Ni7um`8$M5@{bH4LC-}ft|fo=PK z@pFigK(&rZpgYy+-hDVlsL7Xj^ z1+(!VBCCh!0_GhsSS0q=eYkF&GyB+?>a6CPmLn~XlrLMeJKfQRT`2UdjZ1MT4sq!U zDHs%TbNO5bORloO!$I{d6>X@n6?{H;Pb%r&wlS?z_eR&2{!`e`vEns2jUHQvZEK?R zZFAOr(vt?#s#Y!C?jGY$$?KSO#wJLl`yyR02^ANi^sXLa`o1s3_Kp zG&&SRF`CoTU?k{dEl1KsHX6zCw8oIiu&z+-DifhA~X$ch@S$k zFGJu1oiAdOZTRWpP`_cPrh8;41o{EwUF%ee#5R&C*q)NicbotN+z^>ybsO~ z{(0|a=iBB%c72m9@2RK~&P7i~XI1U!TpxxA5EirxxE(-ixh*|?L3g3AmIQ{thvHgj zys6)?Q!~VJ#p6h_DQ;gt@u_<9C&`!U*5x&tuGGGM&>gL4$X+vWb(;TX*^k$0`HQBO zgoy}fEa*OP%|NH{H&iDl4Dmk+3&x|s4P$hLk_qT4SDnN=53x$z@T~eE!J@?C1T;m9#SLhTl_rk?tZezH8@o%F+$t_T-1YmD}2wTN(wQD2D?ZwdU*l8%qYRAz^K7!z-Tc+#)&b} zi80BEG1-GLfH8tGfiZ)zfU$zHfswI;k!cnqI|rjE0|Uc<5Q_=O`VVF?i!%IY_|GB4 z#=)q?#KFxb#KOU3#2_Oi#lfs3#w7sMfC8kLB$&Gxh1wZ8ScIAwf%05}=NK3q7#bj| z7=_S9m=vZyy7S-KOW}HKDP9!C>X?(6oSMWMoSRvaQKZQFs zX5?TKY6FD}!zo5|x1fkHDNKjBg+rkUFN$JyPAtmLNn-cP&&Vsz&jY&0%{+7a>MDzU zI{TNuIRE`|&2FP|-ZJHaqcOiIg6;qeLPWjsT<9 zY(^n*E>Yi99R+Yi=qLcgKt};=xs+T+Nl8JmmA-yzMPhD2PO4sVey)CESz<|IkzQ6o zx)vJ;lK_(hivgpR2rSJY(u4pLSQIU#2td`M#u-c$C9HtS+=87$ij9L!fG2>lOsNFO zV3gSS{_gU9#$HBT+#DKrWlWrkC%2E;RwB zZbpIQzdQELFpe@7GUU=v&PgmTR>;WDO)bh-C`c{JOfJpIELJE3aSKZmQ;SmbQc80b Ma`SUii%T+70Zl43>i_@% literal 0 HcmV?d00001 diff --git a/app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_08.binproto b/app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_08.binproto new file mode 100644 index 0000000000000000000000000000000000000000..741d08691cd9990e3eb24c347c5c08de541d9861 GIT binary patch literal 1084 zcmaKqdq@;f6vpqFomr>RavECQw%2VpdTh4p8YWv%ZDl!N8W!1Nk6F33Q@cCcK5Pq# z3MzZh)86zh6eN@&f&`<7l$91iWmJ;xKW1eSlu*Prx<##omjn0AH|O5@%{gB_3w-PM zb7y-p4S4^J8SRzp!j~QlJ~Zh~UE%o&RDx;H^QB_@xJBd7tbBFVn4GI9bKElV2C>zW zVaYK6BV_gp-N3yE4olR*nvZwvc?(WoJek>ax%ou%Q|0SUYlkbcv>Sz9whBp3#VM^^ zO@cv7cD5m#!(>fK;K`6Wo{7|#i}Sx6eMlDf?AmIo(7n^Oj{9jjEb!7TxPYG7Q+M5F z^sRZDKI>^CZC7tG)4A$3wn-fRQ17}oHOpYRnAKc0ziIEhB4U(^Cl|Ch-nLcew~*n2 zW=YXpJ&2Dj4RFWxeZqMV| zNIP|w=`9OK4Bsp3hO%A}y=x2*N8F>6_hr}T6N*oOV_%wJFNRG-?M!d40`~qz_BOU+% literal 0 HcmV?d00001 diff --git a/app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_09.binproto b/app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_09.binproto new file mode 100644 index 0000000000000000000000000000000000000000..725d81333d20bbbf2ec02a41aa152e34af0a3d15 GIT binary patch literal 1107 zcmaJpJNf?jzTY|LJHPY&enm8}E#HqG z>B!UJ?U%;2RWFO2yxV(c&Wm%!$FhmEtX_}j+S`WB8h&`uv-A4Cg|a-!D~bLPHuEOl zWcUZj>jXXm^9~p+5Ibr=T(?c1cId=`yx6J6{f*7?*Nx_OPkio26n@&mWjJN0uxN=G z3i0{*x_kzU?)kxoea^8|yuQLd^~;`n;_Qx1YqKgfZ!|5#e)79GR=5hs(IeY{P1h)G z%k)*BwWOZ3DP0U?q0+{h!{GPzp4+1>I{t*Ev1V#)>y#2vFO-g)+2nZH8ZBxP2Xd-8 zC6l#aw<});EnpY{CMc*HYy-gtP8+zUK{1rVV(>r!BCrOa5{LtkMuP?+l<3R|B};T= zDh*1Y1kI^wFc5UQnj>k#j0ST$TBXlqSmi>>(h*wKX5cmgO>*l%*=PDSAv6K4NuC0( zJ3`>y?avcq?fA)paF5}jCVC~8=%h+~Qpi(2lzJOpUpv#+w!`|3IwD=%OylToc+--EM# zf8M*<{x;Ufp}i(aRTb6znfTH8lT4SDnN=53x$z@T~eE!J@?C1T;m9#SLhTl_rk?tZezH8@o%F+$t_T-1YmD}2wTN(wQD2D?ZwdU*l8%qYRAz^K7!z-Tc+#)&b} zi80BEG1-GLfH8tGfiZ)zfU$zHfswI;k!cnqI|rjE0|Uc<5Q_=O`VVF?i!%IY_|GB4 z#=)q?#KFxb#KOU3#2_Oi#lfs3#w7sMfC8kLB$&Gxh1wZ8ScIAwf%05}=NK3q7#bj| z7=_S9m=vZyy7S-KOW}HKDP9!C>X?(6oSMWMoSRvaQKZQFs zX5?TKY6FD}!zo5|x1fkHDNKjBg+rkUFN$JyPAtmLNn-cP&&Vsz&jY&0%{+7a>MDzU zI{TNuIRE`|&2FP|-ZJHaqcOiIg6;qeLPWjsT<9 zY(^n*E>Yi99R+Yi=qLcgKt};=xs+T+Nl8JmmA-yzMPhD2PO4sVey)CESz<|IkzQ6o zx)vJ;lK_(hivgpR2rSJY(u4pLSQIU#2td`M#u-c$C9HtS+=87$ij9L!fG2>lM5zeK zV3gSM{_gU9#$E1f zo$E{1;e)s5c2{l;UTPkGczWmc-1AeZ7{jpVE3Ms=mrXfa`09p!WTq@1@z1^X74>l z+rDJ$XDzL#ElL+7ovE}jPv`LaI>*CVsXEie)Yj^(ru~cZh+Zt1k<(^--Bpv_M#c)N z6?qG_V6`e=1}$Ki21$^9XuJhP3)n4Cv>0-s0M>y6JP?HK0A)a(f*2Mw2%&I)Mk!f% zAX8~j7=>9u&4Q6)W7Pu9QYmP>pkr0~c#c;tL@gbqRqX>|53sbb6O?mqR2xF`(e_9c z2!jy{AMNP~&#~ecYXU=tjalH7iin-bb4h-OcM|h9u&Xx5)m>r!#+;LGa!;Kru1(z% z8rN0O)p$F8ZT!+205ghkVIo{mZ0sN|(Flc)MYz!Xf+54EQWUW>R@qH_3X_>#PS@jW zBY(Cu^t^2vVbk7|q(h~ZrYoVU(4xxno^3&>0m_UHfKU#sTG-t`7t{=cxkMopJ|5x1 z;+;c=jmZ$bveO=8l^t%M>{j?>&X#V~ZcVRGxKrKxxGz*%m$G?yiNVvb`bV!JbJe{3 zAXNh@GkOF<6R>f*2a1!UMEuW&2jgiF#&DW!l7I(c; literal 0 HcmV?d00001 diff --git a/app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_12.binproto b/app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_12.binproto new file mode 100644 index 0000000000000000000000000000000000000000..e67ac62d5cbf88561bcc97079e00925b3c3eac61 GIT binary patch literal 1118 zcmaJ2@*>tUSZgX1QU#{|IAw?EU`%4t%NSJFXxYQe&>AW`+ev93NWyZKTaHP z%QljoSI0G%FOQzNm%eBCs|$rEhf*n-J)X{WHV>XP6kw4=;_1Rb!Y1j)jyWMZML=eVsk&C$n!=n%`LlyMN7qS zn9t2M<}yU|&Q~7wyui}2no{S~ulw(dv)i_;&n(lw)i)0Q$?xS@;X0f`PaJ)>+@KAO z)7N}4XiZv&+QqERSKHW!Gvq^!@6M0Vt)lf|TdcIkwkmyPX6W|(_SVe&dE;kC zsY=k;(F5S>0H+ymsY*^-;(r1b%twIh%jgS43+Y^hg{U*Ikj}@A1AXCeNU>*SiBTaC z@{7Dj4rB={g|JY)5nHP)sXS2Mm`#zpALsaoU)4tYx=ffAspyXgh_0NyRk#^6vRf2S(YDn$xlEt+%Sb zSWRkT4SDnN=53x$z@T~eE!J@?C1T;m9#SLhTl_rk?tZezH8@o%F+$t_T-1YmD}2wTN(wQD2D?ZwdU*l8%qYRAz^K7!z-Tc+#)&b} zi80BEG1-GLfH8tGfiZ)zfU$zHfswI;k!cnqI|rjE0|Uc<5Q_=O`VVF?i!%IY_|GB4 z#=)q?#KFxb#KOU3#2_Oi#lfs3#w7sMfC8kLB$&Gxh1wZ8ScIAwf%05}=NK3q7#bj| z7=_S9m=vZyy7S-KOW}HKDP9!C>X?(6oSMWMoSRvaQKZQFs zX5?TKY6FD}!zo5|x1fkHDNKjBg+rkUFN$JyPAtmLNn-cP&&Vsz&jY&0%{+7a>MDzU zI{TNuIRE`|&2FP|-ZJHaqcOiIg6;qeLPWjsT<9 zY(^n*E>Yi99R+Yi=qLcgKt};=xs+T+Nl8JmmA-yzMPhD2PO4sVey)CESz<|IkzQ6o zx)vJ;lK_(hivgpR2rSJY(u4pLSQIU#2td`M#u-c$C9HtS+=87$ij9L!fG2=4Unv*J zV3gSY{_gU9#$MW7+#D;WDO)bh-C`c{JOfJpIELJE3aSKZmQ;SmbQc80ba`SUii%T+7 E0fHYgPXGV_ literal 0 HcmV?d00001 diff --git a/app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_14.binproto b/app/src/androidTest/assets/backupTests/chat_item_standard_message_group_text_only_14.binproto new file mode 100644 index 0000000000000000000000000000000000000000..34972bb7f4a066878349e724c00e8857787da3cf GIT binary patch literal 1096 zcmea}U=+CVYr*{QhEfXsyKEj#$*x#(ig%Lc-3T4SDnN=53x$z@T~eE!J@?C1T;m9#SLhTl_rk?tZezH8@o%F+$t_T-1YmD}2wTN(wQD2D?ZwdU*l8%qYRAz^K7!z-Tc+#)&b} zi80BEG1-GLfH8tGfiZ)zfU$zHfswI;k!cnqI|rjE0|Uc<5Q_=O`VVF?i!%IY_|GB4 z#=)q?#KFxb#KOU3#2_Oi#lfs3#w7sMfC8kLB$&Gxh1wZ8ScIAwf%05}=NK3q7#bj| z7=_S9m=vZyy7S-KOW}HKDP9!C>X?(6oSMWMoSRvaQKZQFs zX5?TKY6FD}!zo5|x1fkHDNKjBg+rkUFN$JyPAtmLNn-cP&&Vsz&jY&0%{+7a>MDzU zI{TNuIRE`|&2FP|-ZJHaqcOiIg6;qeLPWjsT<9 zY(^n*E>Yi99R+Yi=qLcgKt};=xs+T+Nl8JmmA-yzMPhD2PO4sVey)CESz<|IkzQ6o zx)vJ;lK_(hivgpR2rSJY(u4pLSQIU#2td`M#u-c$C9HtS+=87$ij9L!fG2=4Rw)|D zV3gSL{_gU9#$K9Syc{e7JqIt`Ut(&+#KFkL&A}=#Ve`|zWyW3%Tr3=HQVas;es}Df rVH~9_q{t;-lv!L_tdN*mSemMknvS0 literal 0 HcmV?d00001 diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/backup/v2/ArchiveImportExportTests.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/backup/v2/ArchiveImportExportTests.kt index 10bb44017b..b9001228dd 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/backup/v2/ArchiveImportExportTests.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/backup/v2/ArchiveImportExportTests.kt @@ -171,6 +171,11 @@ class ArchiveImportExportTests { runTests { it.startsWith("chat_item_standard_message_standard_attachments_") } } +// @Test + fun chatItemStandardMessageGroupTextOnly() { + runTests { it.startsWith("chat_item_standard_message_group_text_only_") } + } + // @Test fun chatItemStandardMessageTextOnly() { runTests { it.startsWith("chat_item_standard_message_text_only_") } diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/exporters/ChatItemArchiveExporter.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/exporters/ChatItemArchiveExporter.kt index abd5f6793c..f4fc7c4476 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/exporters/ChatItemArchiveExporter.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/exporters/ChatItemArchiveExporter.kt @@ -1379,7 +1379,7 @@ private fun List?.toRemoteSendStatus(message reason = SendStatus.Failed.FailureReason.NETWORK ) } - MessageTypes.isFailedMessageType(messageRecord.type) -> { + it.status == GroupReceiptTable.STATUS_FAILED -> { statusBuilder.failed = SendStatus.Failed( reason = SendStatus.Failed.FailureReason.UNKNOWN ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/importer/ChatItemArchiveImporter.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/importer/ChatItemArchiveImporter.kt index 97c398b9b5..db3b31a351 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/importer/ChatItemArchiveImporter.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/importer/ChatItemArchiveImporter.kt @@ -1073,7 +1073,7 @@ class ChatItemArchiveImporter( this.read != null -> GroupReceiptTable.STATUS_READ this.viewed != null -> GroupReceiptTable.STATUS_VIEWED this.skipped != null -> GroupReceiptTable.STATUS_SKIPPED - this.failed != null -> GroupReceiptTable.STATUS_UNKNOWN + this.failed != null -> GroupReceiptTable.STATUS_FAILED else -> GroupReceiptTable.STATUS_UNKNOWN } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/GroupReceiptTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/GroupReceiptTable.kt index db275150b6..118e146be4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/GroupReceiptTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/GroupReceiptTable.kt @@ -36,6 +36,7 @@ class GroupReceiptTable(context: Context?, databaseHelper: SignalDatabase?) : Da const val STATUS_READ = 2 const val STATUS_VIEWED = 3 const val STATUS_SKIPPED = 4 + const val STATUS_FAILED = 5 const val CREATE_TABLE = """ CREATE TABLE $TABLE_NAME ( diff --git a/app/src/main/java/org/thoughtcrime/securesms/messagedetails/MessageDetailsRepository.java b/app/src/main/java/org/thoughtcrime/securesms/messagedetails/MessageDetailsRepository.java index 512cc5c073..32717256c3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messagedetails/MessageDetailsRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messagedetails/MessageDetailsRepository.java @@ -198,6 +198,8 @@ public final class MessageDetailsRepository { return RecipientDeliveryStatus.Status.VIEWED; } else if (groupStatus == GroupReceiptTable.STATUS_SKIPPED) { return RecipientDeliveryStatus.Status.SKIPPED; + } else if (groupStatus == GroupReceiptTable.STATUS_FAILED) { + return RecipientDeliveryStatus.Status.SKIPPED; } throw new AssertionError();