From b765ee5d5dc89c17bd6dfa4ab7d77cfb4b44f638 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 15 Oct 2020 19:48:59 +0000 Subject: [PATCH] Changes of com.discord v1297 --- com.discord/apktool.yml | 6 +- com.discord/original/AndroidManifest.xml | Bin 40468 -> 40468 bytes .../drawable-xxxhdpi/img_age_gate_failure.png | Bin 59828 -> 59829 bytes com.discord/res/values/strings.xml | 18 +- .../smali/com/discord/BuildConfig.smali | 6 +- .../smali/com/discord/app/AppLog.smali | 2 +- .../StoreApplicationStreamPreviews.smali | 2 +- .../discord/stores/StoreClientVersion.smali | 2 +- .../stores/StoreStream$deferredInit$1.smali | 2 +- .../com/discord/stores/StoreStream.smali | 138 +-- ...ompanion$LocalPresenceUpdateSource$1.smali | 27 + .../stores/StoreUserPresence$Companion.smali | 32 + ...reUserPresence$observeAllPresences$1.smali | 80 ++ ...esence$observeApplicationActivity$1.smali} | 10 +- ...eUserPresence$observeLocalPresence$1.smali | 68 ++ ...erPresence$observePresenceForUser$1.smali} | 10 +- ...Presence$observePresencesForUsers$1.smali} | 10 +- .../discord/stores/StoreUserPresence.smali | 953 ++++++++++-------- .../smali/com/discord/stores/StoreV2.smali | 14 + .../StoreVoiceParticipants$get$1$2$2.smali | 2 +- .../analytics/AnalyticSuperProperties.smali | 6 +- .../analytics/AnalyticsTracker.smali | 4 +- .../rest/RestAPI$AppHeadersProvider.smali | 2 +- .../UserAvatarPresenceViewController.smali | 2 +- ...Model$Companion$getFilteredFriends$3.smali | 2 +- .../WidgetChannelListModel$Companion.smali | 2 +- ...ListService$observeStateForGroupDm$2.smali | 2 +- .../input/WidgetChatInputCommandsModel.smali | 4 +- ...$Companion$getForShare$activityObs$1.smali | 2 +- .../ViewEmbedGameInvite$Model$Companion.smali | 2 +- ...erItemListenTogether$Model$Companion.smali | 2 +- .../widgets/debugging/WidgetFatalCrash.smali | 2 +- .../FriendsListViewModel$Factory.smali | 2 +- ...idgetFriendsFindNearby$ModelProvider.smali | 2 +- .../home/WidgetHomeModel$Companion.smali | 2 +- .../WidgetSettings$Model$Companion.smali | 2 +- .../widgets/settings/WidgetSettings.smali | 2 +- .../user/WidgetUserMutualFriends$Model.smali | 2 +- ...dgetUserStatusSheetViewModel$Factory.smali | 2 +- .../ModelRichPresence$Companion.smali | 2 +- .../WidgetGlobalSearchModel$Companion.smali | 2 +- 41 files changed, 870 insertions(+), 562 deletions(-) create mode 100644 com.discord/smali/com/discord/stores/StoreUserPresence$Companion$LocalPresenceUpdateSource$1.smali create mode 100644 com.discord/smali/com/discord/stores/StoreUserPresence$Companion.smali create mode 100644 com.discord/smali/com/discord/stores/StoreUserPresence$observeAllPresences$1.smali rename com.discord/smali/com/discord/stores/{StoreUserPresence$getApplicationActivity$1.smali => StoreUserPresence$observeApplicationActivity$1.smali} (82%) create mode 100644 com.discord/smali/com/discord/stores/StoreUserPresence$observeLocalPresence$1.smali rename com.discord/smali/com/discord/stores/{StoreUserPresence$getForUserId$1.smali => StoreUserPresence$observePresenceForUser$1.smali} (80%) rename com.discord/smali/com/discord/stores/{StoreUserPresence$getForUserIds$1.smali => StoreUserPresence$observePresencesForUsers$1.smali} (86%) diff --git a/com.discord/apktool.yml b/com.discord/apktool.yml index f0ada6ad4e..234eb824e3 100644 --- a/com.discord/apktool.yml +++ b/com.discord/apktool.yml @@ -1,5 +1,5 @@ !!brut.androlib.meta.MetaInfo -apkFileName: com.discord-1296.apk +apkFileName: com.discord-1297.apk compressionType: false doNotCompress: - resources.arsc @@ -81,5 +81,5 @@ usesFramework: tag: null version: 2.4.2-83a459-SNAPSHOT versionInfo: - versionCode: '1296' - versionName: '45.0' + versionCode: '1297' + versionName: '45.1' diff --git a/com.discord/original/AndroidManifest.xml b/com.discord/original/AndroidManifest.xml index 0c853a4a62c73634fd15b4a4f90d3b21fc3edec7..72fff6932f010341f91605a6f8a2127c0870b7d8 100644 GIT binary patch delta 23 fcmbQThiS?lrVUrP7!5aH<+^UgD7bm8YkC9#cTov` delta 23 fcmbQThiS?lrVUrP7!5XG<+^UgD6o00YkC9#cRmSx diff --git a/com.discord/res/drawable-xxxhdpi/img_age_gate_failure.png b/com.discord/res/drawable-xxxhdpi/img_age_gate_failure.png index 8d4c0a7a3af822987ee2c660564c9b0d755de3c7..508b70a6772d4d64b265a6ddfc0c00d263eed0d9 100644 GIT binary patch delta 32690 zcmXV1gSdOS)THS~^8Sx};G-5Co;0?;@f|NC}9PQc8E%A|buf4NEt>Ey8hxSRG@GW2iaJeNCP(=?--My2|Tq$1B5h+ zjnY_LP$&R3=peH!gv!s$s@g?(nrx^>7qHjj{ z%^G>|Md!Fj7kb<)At*H{p@h0ME|&4qdoc0UhpYlgcvOvZiXo>B0fZ3B-=%1R-C?&; z*2ycMu7fEhpkGpV)IqJCvbYKGP2DCZU{H_wZBEbuMiM_h56Imb^T^CC(C@bVG_q^0 zj$Y0g+A*Y=8K*$K;#+V3Nx0nW9>PdFNLlbE$nph4R=5@{e99`A?P=942MOpc1Jp%o zKcm>d{MYs4^Z~kqzg$U4OAMNVq8CtHQcip@+slm~{=G*hGpzkZ2#X`&=|u<_+G?fl zpp`0tCop86HnW=bbFqPQepqs++x!iiw2KB9xrf`PYf4QZ=K8Op1rnxuP~rYBRPKpq z4STE<guwwTxh zAwicsP`Hi=*go*Xx&+`i-N$=Za(6MC@R*DL8pK6A^YkG2nWH9U0mOPFLJZ8JK3*yh z|0}vaT3;Slk%0>UJK~0OSkcDOuuJ|B|jEd}+ zHaMY_kb46Z$Se2ip(Z?Jp_FYJ$7aR3zV+ARL2K&o4>nE~-GEe32ke728l-|!1li+4 z((7~QKW`JKFAA-zaE^OR*)6AWUpOZ@0c9F>YvZ(}_NzjT@O$r_=+V-)IG1f|M}qu+5tdI+>(<6 z-RG>GPn<8j$l&{+=)^PmtS}7{2+V;*^}~iG=GnnRQO4O+Q=>GHvujHh_m3tXd&|Zh z<#jMpFk&U41=H#U5*y$8$pl5UH(Cs>n6;zmtXvjHvdkF+th!Ik4WAs&pS> zyDWxiXa`4~pdCMX5y6LkYkh<}O@!m+kE7rv7CFM>7ga{_4TQhoc9szKg6MR$P`3Mf zbyfFRgTJJp{`m|C7fT?SDXW`&Q#X&QH7R+j-E3CsrXsqq?h1#X0=mf8)vrSF{gQZr zM^;TX%QdGFwTJ1E7umkLtdM@!>1j>9nX6S$V0($C=J2waMA8PXcy$A}TxsQO`eQE0 z%BSDGA`qArnd%3gnTTmw4_8ZB5EoCgfn$Kz_Po78yEBnN(RM$H5$-Eu28kuWI)lR| zki1^~Wf=&04GO(`?Kh9pR`HVMajpoUktQ`LN207D2&q(?#QMOHfI~f5X#0e@QP7A` z`vcE3_&`(?9LgA<%KM11vrvZwVkFQ%J(u|u6rqErgQz(_lN~g?2=FTY&;evgI1xP! zuWc}nrM6GKHj{Imp2{+m!hQ7A1oyEe7*hf92dTVEv(6`vTAVN6rewKjr$^WJ*BE+F zv2f8_f;vhozv}0KPP_j_L0$EOl}rQl(0^P`gV7swI&5;F!cZ`HubI z1L6NXJvBuAZD(AsJlPZtmBTr@rkNVVd~R{Xg@chb2{!wZ_T_>MoRP|((dfBcY%qwa zZmd}oEK?YL;F%hml@-a_;S9o`F>kzH5&Hc}SZ&~1c5|d-rKZ5x=9hmq`t9RuwE5s0 z9Qe6-(&W-7bs&A41YN6*hop_Rx5d3Q!ydNy=5VFSJR%?RSo;qK1@fnzsX=r*5$R&i zLQ|B%{vXvDC6bN2Z5U$qmwAWSpkPsKDcV~BD`NpDUr|pb0 zHl_3(6J6-U#~V9PT%r^4b6GE1IBI}8G0t8nW#OF=AW7NP(TF zL`$2=obYB=-xmLp$qFY~!9wQeup;B>A^)VC+={*B4)cw6eG*8_B&M7T>VqGBD4yyw z#b`PZ&e6hRFdSk~qI^jf?YM{&2*|E*l6>dTW{cmw=_?;~AbIzJXAdy!^;{dRKfY(j zYpRnH1H0$<&0aiNg_klJ941%A7E;~{T1PGDp<-)Zo_}*N=jWv{; zCxYCO-m5+|JWjZ)Kfh9%JMzP_%`iD3lv&o8gH2Lrs_nt`Ym+Xi;BqsNq3z>O+I{t; zH;&kSqn1aqUGDnI2Umy#KRi@6@PUXG7S`Z#B`69VKPw<*cxos0&3gPEWQG)uzVU9S z-e;?6GIod1pUiy=C&(8}`LPOkkG$uv$kX6i7wlmtR8`lR0VnBh?6qM)+7AXwP`A95 zLjIKWdOJf8IP^Fqcx#Q>`^{aoBypQ7+-b7e90j2(f&03L>Y{VoXu!KJ~M%m}&S#dg7snIGSD*irQh7h+9~7JK#mcu0)*peoP$n)&yc36y8k z2gdiw1=%z`Zx{EV>Z&|n+fJ@-l4g}`5fPOsyp&f{`6oDS{g)-Vze@1Q-{`u8c&wih z1e#yRfRVv$GGtjk27pa^*ad#Iosziyk;?;gy*BP~p&3NGZ*zYsn-^=YP6-M>pm){B zD|F@@r1L;Wo=V2FXLG*({GngEK+40=sJ6m6Mf9RSQtqckIn>(Gpyep67yAfoeJ;gj z&5h0dinD>l01*mAatTET^;q1{OxI#Db|C@zuQbuvn*)gN%Cpk8vQ?RadXzQgnz_QBcdy+t^maoZamw2$Y_0}_+O$Bx zPz_%@P&+AjOE;0(%NHcZbFvB&mifWK(VWWy)u)55S>WHK>QcDadImVB)}Pe29d@zky?3~_`XO53?0!2qNADXLnT&h$D2$&k zI&L7PeOPfTAU$~eV!nw|9lK=6b5}%`|fFWa86b zcKfzq*)L79?4T=2ITkoh!j5OA&Q?5axr#`>)Mu{2B$iXX!Xs{*}z!1{{R zAp2uwH=0~&+@f96!|o1|@q?eh=7$E2%8CI0v`g}55PUVy&$S3O{u)I8AC3MF_kb&* z-|0_5D&Br6GS20Te@o0h2It*gK)%YITjRC~sya#h4;R@$$yO@YJIC`375Shr#r*h{ zzMAwx!Td@!v-OOOC2du{4GCzaAEvLIxQxI_{m6L*_hpqr;44R2Er1WwDWYKyVXvuD z`*+o1Wdk)YR|0`5*`cv!aSw=)Om}Q^>^(>GvjLi0^~1#4(}WIcc9e60(9*aS$K5FjOqd#aszec9Bx0G2ustSJNwt;Z_lG zqAM=y+v9L*@YpghWVv@VVdX47-L&FLK1}dCA!oKCVrUAE&k=r4hlt64*ypj+`dDvm z^U8q0F>62PJ@2Q4K5k0`9S(a@+s#N$RsM~vlZ)q10Hh+W1D77WIxu1JUyoYN5+tS8 zMK`|Ox+nlp0WIf*PrH0iGo>-Z3;bFAB}PBWaVFF*Jb~L%$3oq~fHC@wV%zfQ;Y&3| zwZzC1M;0E1C|pHO7c+#yf5?C!2RAfZIO1<)khjJJWEZDTkIvTdsLpmh2ZRg;x7~xg zQ6Pb2g?fi@#|Mx2-u`S85ovVk$44sY7K4)F|IR2hXM(d6HA+Y={R6$t@nb-_iMZA= zcF=_(Ai8DXe&EgOfR=|uI4N2;wN8{$a_1$-^flxKBep_7^>s|&y1m!#HS9zimReFt z9=){=WFXZ~cc*JB)YX)=Paj9OUS4cxfq+nTqJ2ky0O7f4^n;M}@CP0(aibIb!hb0xGEgDhAW)zPkg$sIPg5Nl4Ra7`RL-`&nCpC;*IvgqrY}*0 zoTCB#FjAk-t(`(+(I~*iabH)p`}honnYY(6b;h}*5@M!$SK|0j79#}0HZSi1(sQeF zu>FSYT!4D{v?#g;01j5TChS|vNAViDG*Rb^`tsP z{|Zmm-5GK%H#uK*g}s!51i*m)W}>X3WNWyza8?3DVmtg*BnYRKWL_CI-)LKi0Z|Om^?n3#zrX>rpab=Al(}GOL zgYu%faX}{gYx=zyZQ<3YHw>y}KZAur%3EZQ=p&ZthNr-;@#EF+@Cig$OSv?a{$#q) z9#;GQp`J6!F2tSYYx^mz+5Mg~#_Aj{_VYg0#AcX|GUkCDDe#U^%!uTjU#{%PizYC1 zA0NquDlY-SPh!`miF+Puw#MCDB+N#k&!ydi%c`1n z->}!xBM(aR!Ypk6!Bs=M0Idkx+5(PX8j)XEUg5X2mfHEMQn2}EJVB3pWy`x>e9?uO zs0rjcc|=G^NmX54Rq}~5u|%ITrz|w~Y`!LtuS!=9s6$>$!JJAa^{{!3?wFbi6&Ji9 zsSdlB4@rn{;`2WnHxBNZKee=x-|~Lrb)Q4b)&N1c=vIl_@xxQ32NKvWiGT$BT)rT2 zKG`TF4>zboz07kF`dl-Z!t8qE7QYArYN2hf{e3J&qUkbzjrbIUk)S|l}iDG?m~WziK7g_0N;8Xb2`-8K${bE>aAZ&^H4NKjnA z6~1ii))cc2L1q3;W`0sZIu7Tdxdt>c4x7_$M76T;`O$4*PkET(Rm#jQ7_whEv{C@r~v}Key5|UW;PZ9+l=EBby|1f z7_SX#&ybvZ-$4MWBp+NVGlYfwqGV?i54aC1yUYsEc+zW?X$JUvJEH>hIQ4o{JRy&O zCS0W4^fJ1wp0E?6Q}Dtd_421uv{+?P*YsUuv-4t)7ga)yW|>4o!fH! zP=?JY9Or|%SwzB9Igb|K<9oEsp2tsuKDteUbL_T)dNL(4-;#P|u%+*N&E?QU3=FoP z5Ki6V!3}$@hUMeEaiE#_NL!f-Nhk^6@|!k`va5r$pYPYaW?S6SQd=LveLWD^E8l_g#E$&M0qUF!(DjyWXqZBHfD*A(t zGJUy_$&lbFKw_-A8{ZV)6pENi5dLQP<8AoG1lEW!M0q`{qj#s`EB(@2Rvb70MlwAA zyzQ>oqQqUz7U*g7(q}F*cb|se_TO_(ha5pcafY?GRgOr8AI})4u9gSiZ)@}{iUI^I zdxeOA%JZm``1a>wUk7M>b>4noydCQKwj>euaa!pQoMT`bj(mwqI&O#@axWy z2miXCoig0#V?{jolumu8U%I=Ht_y`VP z)G43&ZG-=>fg1hF*Osf&%&_&ZL<_&Nnuw#sT4z5q-;@UbNcnAqdF|l3{cthv zIYi}){uCzkie6!$&j-e_bzcbYUP5TTE1l$(`TczM+wa80>Hn^3*eTlsvM=1qF6o1h zqN04azo&o#6G}+UZo<4BS`Wq3rd>GE!LRV=2`|e|`pxKj2pa(NxZjf2Cb?)9xZJM% z8p(AC{9|2eluN*MTNuQZu?7L|EY4q>2Pw*!t9e1k*?K5aSpu8cv7O7W95WhE>9Ujjb2jiaBKhi?B;PAtYdtoZQeU*Z zNO(UtTYo%6-cgaHJtO5+#7kVbl_35fbE>9!+r^h7?bGk_(#`!kjO+>gKC^wEDN!>B)K088XDhw zHk%8YiP|4pJbIq)qbi}hw~2pQU6Wu*L~Unmt$*9iziVzLU)V2eB{`2 z3va%YI)CpXN z<%3%k{e%d@GKLrSSM-w$TD{M`pKMus#U%-!1s^$n9nLSX|CxN%hM{A~0kH^Kn7}@X z^0CH9u;_t${bg3@=C0UmiBWyOd`0KD-7n8iDW1H~R8gG!ZGI(4I6t3WDR@sc4}_T9 zPrCzxNPj4ORKE8`ml#TsRlapkbEy>aM?|#v;>jji^5Sb?C&~(G>p`c;_t$l%QMvG? zEj5hMuhlCO|0+Kv>-Pf*$jpS*54TZM z1ZY|z(X`0FGZ0xeeY=_`dMK-}T)6dH5&SFcf;TBl3EOQ?=siiHXGgNxI2|6hE_eQG zurTO)bQ7K|Cn3w@J^O>It&)JWv}7@C>%7-;GvRS(>)v1`nWfP;!sCJA9+HgKOQGL@ zrLc?b=*QFFjg5-_f5WDTMYYPFDnswwM8>icG8JCLuhdTSg)Q<`HH~3e%y~)XAIlNT z55BJj`CFSqWLIScH|kcpP=PZ9dB*O^ojLXB@BKq=vf<^j2~^l3`{En@%gRdQ{;I~= zM}gZ19uH?I?pfFqhN^XPqCEXDq|i#hV9WoCJ6`CQ%dcrc!KARZnEHr>*KcJ!hQizb zP;kBSL3~`Kcytsx+#0?|WnqN+XOO2~Nu?C_52p@T8Y*M{I7#s6P8A)Og4n|i>Qi&U~RzX3APIk|7e*~$)(UfKzU zD%kQ)xU_u-sW^Ubw}@VqbbmeA5^UX(*?*T-?~wX9XAZsawd8cA(<$Q3GB}U_f=Yjg zhpA(}^}Nk!`5>4S+82mc<_oTnFd3s;>dtL7dj9v*$w4R#5RunC>)V!6rG&SCdHvqP z*3pcVk%%Y2&N;$?6K+ZG%svGG7NLF^Yt>4Bw}(?dJ2psKR{v->uCsag)2jccht4uW z8}Fwtd0nxluO8kFXG=S^{X3AagDpAZOQXd;`5Cu+6=Znd-H4PEPfnak`}uBj|Jo@! zF7L{bY~QIgXNG6@JASdb!{=D~IJ*HGLZ_1n)T=;DCV#z9&9sQ-GzB_{*>j3Klr@-% zJAb;MWdC6jXd+*Hy!LoYS%@F)X|uU(eYCK;+yV31n7eneOHz0&j9IyXy)hp%Pf?e_6OfGiCYgd+5dQrg!)x7WPOyb3UzjPN*_*_c70rL0r{|(Dsl{{N33$=>= zXvMtwOSHAtlP<^sOPM_2z(H1T%^rC*O=98`7KsWjVYZiVHedk?pt)O5ZjZ2CMUh$m zv{z0tpY$I2`8B=LPys1kuVkCdProo68cOwbO?YX7*VKiycz*O`OU z^>(*BVG(BEY0U@@lASht*FT54?i0`3R^b>dZ+e(^^v+4_RV2{%Xy`2VQ1vD%19=oi z!D$UUPKM1oj;)NKf-j8q@Lm_oJ3O?hoqoZlLeP)jv%k#kpdX&mS9WPv?LsAq1emT-rgZjX$5% z27uvY87ZSvMgUC?*Y!)~v3X0b!b5wOD*qxS#AAsqgYuM_9kW=*^!9BtTQ`pdbamwE zM)_qy?YFM;q-IWC{5D))GRWm}@M4{L#1zCP@;+AQfwtx;bOhsOZ%MwU+m^e{V)mmJ7tNNX0Fzc?$6N0UMt+a%jRZq(vZKP@9j>xXwLz z%G_W#OftOU_%uG(XR)IvoLfRA-Rj0ZJCM%jZ3hkc35@;o*WS+Cj96tUY=4;@d}C&e z4_c1OLCw_0f*bpO_tBpT*&9%F%WH(J1&~Wp!?|yfo^L{*JZ80SWGgx{=ngT1@qIho zf{Ts;KVF~73&91_RkY(?Yo1y0kn~syRK}-e`2y4U@a&yaLTJc6B+e9VN${f&+XW;b z#m2b646EE6R&he-i6)KQ(kqr%Ugpqf=>d^km(yA5%B=m;*B-yTo;uAN#OrA_2yAtQ zAc;wKVnFqMyWd)l&ayt^4}ae`csm>2Ou~2xFxJFbR;z}5vjM>fX39bL^1Q9NM{0Wi|&jV1c^zECfn^Vg^GptH#I%PDJ4{y*q&on zGQuqNU8>OcDpT0xyDl+hxc5r5$KhV8xDX0cITZ*_WzxVHpA84e+DUgLe)$r2=&%Vm z7$NXvn`-GXgTGerdCjHdmr*tCaYgcEM~mt7id(~4qZ!+QID9g3A^R`earzs0Q7jKy zGg4>5M#E-{L#O4ibloxoBw#;)2|pm4{ON*ZQ|z`;21>kl+AZY1M{H8_n>PV#e}I)N zsQV1VJ%l^B`eUpO|9gxOtw1JhpB)&5;yC^+fqFS$g>TcGsV+*p*B&P4L~q{Jhn^hv zgj7R9A}5eX8?JIP!Lh%5Q}kr~$a!p9&QBjHTI%}z&Hl<)%isOGE&M+X(+~f0;MZ6D zz@HZBa-)qc?;a-}!IvAd?CWr1RJePmt*8tYjj8fPv)TW4}mINopTOaqiiKqQa9 zno@ceCMukIb}_lwgDd{=rhfQ)kI6gL%vk3=^Ba8^ElC+k8PPA`5*N z1pk&z+p_dNK#$XYg z7CBhDFlBgm>=wL}zLGz9gAgLavL02~V3Rr;`}vwGK)Iqq?zicS$c~2Gp~`73@=Qi# zu88q0p{nD35tk*s5?A~8=27&{w?Rt74|<0Wk3vMyA9&yYpmReWj<5>9-VNm-t0Jyf zu^%OMxsG%&32?7$A(7)jB0X#gKb9Yb!)(Fw{XrA)*O7J@9nT%glf9}Wz+ZfcRAZ? zKA_=p>Qei-GvMqL2w3@YPZ*gi>85`I#?Vvbn3Kbqhbr=~URF>MpweC-QSw;b6Plp1 z`@NZYrPG$N8+Dr1rmZ5ivK`ua8U{nD+>y_2W&!j!=xB^Zj*}Fn@IUUdNOy)8*6HA<-!3djw=+HMb(~jhCM#m@f{1SY zrwOct(>yul()p(y2l9a@{25O2C=oC-<3D`4oB96 zby6WmH^)G3hUc*6h3<@tFYxxlSA`X+>+O0I6b`h&1DtQ_JD)m*NdRcKev7&PvV#^$ zHr{0ezRGvbt+?56e7#e-*@OVk>i$q)QI#!moh*^B&4Qf77{i0uI@@>t08+!H z4*!xjz+wGf+mos7`HJVK3S!IX?^%#-t+>U`&`uQza*v^0Zlz_<+I!c!dL2On_TMl(62kYsLwak9k~JDc6uqYb2+%bg&9h6p*zGv*niC1 z+=g!vJP&kfAA3m@hPrynI1Rl;+9msRf5cG|W+)|0RQKBXCbrROf^rGAqSe>GD6*&K z3hthVqMk8djiT0YFV)F#xnu^`f$`ZV4lzofnw`9=uTbed!;E9dT?GF`hGYNd8MQp9J5%!xkZICE4Dr;K0OR3P?Es`c-q&0?MQjx8HV}b=}2Eqg6v9@DZVb zVxQmY|D-}QVEjh@mx{K#L}J`;UHYY4y@NbEq42$b+w{bm2dVU>78XhbA7^ zd2>PJq|2B|hT(v9*<4lv$ZxVQGh>rj=88T9aW=F-Ef}* z7)e^>*^SuXT=AiWTd~uHI>Gkx9h)WZS4LGf`}?1Ga-Y1A;&-_`CD+{g z<|K))uUh;EE-lp`~mbM5m!)Rl~GKx=kMU?>1Sm^(lQqzkw
~mgj4eocw-v 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 I<;TzeAEGWb)&Kwi diff --git a/com.discord/res/values/strings.xml b/com.discord/res/values/strings.xml index 1c512e6553..88d57db5ae 100644 --- a/com.discord/res/values/strings.xml +++ b/com.discord/res/values/strings.xml @@ -1079,7 +1079,7 @@ We’re here to make a good impression." Invite Your Communities to Discord Share Discord Learn More - View our Help Center for more info or hit us up on Twitter. We’re excited to see you express yourself with stickers. + View our Help Center for more info or hit us up on [Twitter](https://twitter.com/discord). We’re excited to see you express yourself with stickers. Have a question? Stickers are here! Channel @@ -1195,7 +1195,7 @@ We’re here to make a good impression." Presets Select a color Transparency - 9aaf091650b4477e83cb1663d656a7eb + a85b1a6fb80c4948aac306383643238f Coming Soon Search Animated GIFs on the Web Text to search for @@ -2401,8 +2401,8 @@ We’re here to make a good impression." Select a voice channel Select a server for your stream Screen Share - **New!** You can now screenshare and video chat at the same time. - New! You can now screenshare and video chat at the same time. + **New!** You can now Screen Share and video chat at the same time. + New! You can now Screen Share and video chat at the same time. Got it Sound may not be available when sharing a screen on your device. Audio sharing may not work on your Windows version. Please upgrade to the latest Windows 10. @@ -3976,7 +3976,7 @@ Want to know more about Discord?" 100MB upload size for high-quality file sharing. HD Video Up to 4K source resolution and up to 60fps screen share. - Hi-res video, screenshare, and Go Live streaming. $[Info](infoHook) + Hi-res video, Screen Share, and Go Live streaming. $[Info](infoHook) Support a Server Get %1$s and %2$s off extra Boosts. $[Learn more](learnMoreHook). Customized Profile @@ -4156,7 +4156,7 @@ Want to know more about Discord?" You can switch to other apps for your friends to see. The latest version of Android is required for your audio to be shared. You’re sharing your screen! Participants without video are currently hidden. Would you like to show them? - Screenshare + Screen Share Sharing screen Stop sharing Moderation @@ -4316,8 +4316,8 @@ Want to know more about Discord?" What a cold, emotionless world. No Reactions Start up some conversations, then keep track of them here! - "This channel has special permissions. To use screenshare in it, you'll need someone, like a server moderator or admin, to change your permissions." - No Screenshare Permission + "This channel has special permissions. To use Screen Share in it, you'll need someone, like a server moderator or admin, to change your permissions." + No Screen Share Permission You do not have permission to send messages in this channel. No stickers match your search No System Messages @@ -4551,7 +4551,7 @@ Want to know more about Discord?" Options Options matching **%1$s** Orange - To use screenshare, please update OS version to 12.0 or above. + To use Screen Share, please update OS version to 12.0 or above. OS Version Requirement Other options Other Reactions diff --git a/com.discord/smali/com/discord/BuildConfig.smali b/com.discord/smali/com/discord/BuildConfig.smali index 52f770330e..837db461d4 100644 --- a/com.discord/smali/com/discord/BuildConfig.smali +++ b/com.discord/smali/com/discord/BuildConfig.smali @@ -42,11 +42,11 @@ .field public static final SAMSUNGxDISCORD_CLIENT_ID:Ljava/lang/String; = "97t47j218f" -.field public static final USER_AGENT:Ljava/lang/String; = "Discord-Android/1296" +.field public static final USER_AGENT:Ljava/lang/String; = "Discord-Android/1297" -.field public static final VERSION_CODE:I = 0x510 +.field public static final VERSION_CODE:I = 0x511 -.field public static final VERSION_NAME:Ljava/lang/String; = "45.0" +.field public static final VERSION_NAME:Ljava/lang/String; = "45.1" # direct methods diff --git a/com.discord/smali/com/discord/app/AppLog.smali b/com.discord/smali/com/discord/app/AppLog.smali index 6df5d71616..b08d8c6d63 100644 --- a/com.discord/smali/com/discord/app/AppLog.smali +++ b/com.discord/smali/com/discord/app/AppLog.smali @@ -393,7 +393,7 @@ sget-object v0, Lcom/discord/utilities/buildutils/BuildUtils;->INSTANCE:Lcom/discord/utilities/buildutils/BuildUtils; - const-string v1, "45.0" + const-string v1, "45.1" invoke-virtual {v0, v1}, Lcom/discord/utilities/buildutils/BuildUtils;->isValidBuildVersionName(Ljava/lang/String;)Z diff --git a/com.discord/smali/com/discord/stores/StoreApplicationStreamPreviews.smali b/com.discord/smali/com/discord/stores/StoreApplicationStreamPreviews.smali index 8e62429320..6b3e422106 100644 --- a/com.discord/smali/com/discord/stores/StoreApplicationStreamPreviews.smali +++ b/com.discord/smali/com/discord/stores/StoreApplicationStreamPreviews.smali @@ -302,7 +302,7 @@ .method public final fetchStreamPreviewIfNotFetching(Lcom/discord/utilities/streams/StreamContext;)V .locals 1 - const-string v0, "streamContext" + const-string/jumbo v0, "streamContext" invoke-static {p1, v0}, Lc0/n/c/j;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V diff --git a/com.discord/smali/com/discord/stores/StoreClientVersion.smali b/com.discord/smali/com/discord/stores/StoreClientVersion.smali index e6aa840828..31626160cc 100644 --- a/com.discord/smali/com/discord/stores/StoreClientVersion.smali +++ b/com.discord/smali/com/discord/stores/StoreClientVersion.smali @@ -28,7 +28,7 @@ invoke-direct {p0}, Lcom/discord/stores/Store;->()V - const/16 v0, 0x510 + const/16 v0, 0x511 iput v0, p0, Lcom/discord/stores/StoreClientVersion;->clientVersion:I diff --git a/com.discord/smali/com/discord/stores/StoreStream$deferredInit$1.smali b/com.discord/smali/com/discord/stores/StoreStream$deferredInit$1.smali index a051f9cec3..c1a304d4f3 100644 --- a/com.discord/smali/com/discord/stores/StoreStream$deferredInit$1.smali +++ b/com.discord/smali/com/discord/stores/StoreStream$deferredInit$1.smali @@ -614,7 +614,7 @@ invoke-direct {v2, v3}, Lcom/discord/stores/StoreStream$deferredInit$1$5;->(Lcom/discord/stores/StoreStream;)V - const-string v3, "streamChannelSelected" + const-string/jumbo v3, "streamChannelSelected" invoke-static {v0, v1, v3, v2}, Lcom/discord/stores/StoreStream;->access$dispatchSubscribe(Lcom/discord/stores/StoreStream;Lrx/Observable;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V diff --git a/com.discord/smali/com/discord/stores/StoreStream.smali b/com.discord/smali/com/discord/stores/StoreStream.smali index 103c33e401..558c711670 100644 --- a/com.discord/smali/com/discord/stores/StoreStream.smali +++ b/com.discord/smali/com/discord/stores/StoreStream.smali @@ -602,7 +602,11 @@ iget-object v1, v8, Lcom/discord/stores/StoreStream;->clock:Lcom/discord/utilities/time/Clock; - invoke-direct {v0, v1, v8}, Lcom/discord/stores/StoreUserPresence;->(Lcom/discord/utilities/time/Clock;Lcom/discord/stores/StoreStream;)V + invoke-static {}, Lcom/discord/stores/updates/ObservationDeckProvider;->get()Lcom/discord/stores/updates/ObservationDeck; + + move-result-object v2 + + invoke-direct {v0, v1, v8, v2}, Lcom/discord/stores/StoreUserPresence;->(Lcom/discord/utilities/time/Clock;Lcom/discord/stores/StoreStream;Lcom/discord/stores/updates/ObservationDeck;)V iput-object v0, v8, Lcom/discord/stores/StoreStream;->presences:Lcom/discord/stores/StoreUserPresence; @@ -1340,7 +1344,7 @@ iput-object v0, v8, Lcom/discord/stores/StoreStream;->expressionPickerNavigation:Lcom/discord/stores/StoreExpressionPickerNavigation; - const/16 v0, 0xf + const/16 v0, 0x10 new-array v0, v0, [Lcom/discord/stores/StoreV2; @@ -1356,78 +1360,84 @@ aput-object v1, v0, v11 - iget-object v1, v8, Lcom/discord/stores/StoreStream;->accessibility:Lcom/discord/stores/StoreAccessibility; + iget-object v1, v8, Lcom/discord/stores/StoreStream;->presences:Lcom/discord/stores/StoreUserPresence; const/4 v2, 0x3 aput-object v1, v0, v2 - iget-object v1, v8, Lcom/discord/stores/StoreStream;->connectivity:Lcom/discord/stores/StoreConnectivity; + iget-object v1, v8, Lcom/discord/stores/StoreStream;->accessibility:Lcom/discord/stores/StoreAccessibility; const/4 v2, 0x4 aput-object v1, v0, v2 - iget-object v1, v8, Lcom/discord/stores/StoreStream;->connectionOpen:Lcom/discord/stores/StoreConnectionOpen; + iget-object v1, v8, Lcom/discord/stores/StoreStream;->connectivity:Lcom/discord/stores/StoreConnectivity; const/4 v2, 0x5 aput-object v1, v0, v2 - iget-object v1, v8, Lcom/discord/stores/StoreStream;->guildWelcomeScreens:Lcom/discord/stores/StoreGuildWelcomeScreens; + iget-object v1, v8, Lcom/discord/stores/StoreStream;->connectionOpen:Lcom/discord/stores/StoreConnectionOpen; const/4 v2, 0x6 aput-object v1, v0, v2 - iget-object v1, v8, Lcom/discord/stores/StoreStream;->videoStreams:Lcom/discord/stores/StoreVideoStreams; + iget-object v1, v8, Lcom/discord/stores/StoreStream;->guildWelcomeScreens:Lcom/discord/stores/StoreGuildWelcomeScreens; const/4 v2, 0x7 aput-object v1, v0, v2 - iget-object v1, v8, Lcom/discord/stores/StoreStream;->clientDataState:Lcom/discord/stores/StoreClientDataState; + iget-object v1, v8, Lcom/discord/stores/StoreStream;->videoStreams:Lcom/discord/stores/StoreVideoStreams; const/16 v2, 0x8 aput-object v1, v0, v2 - iget-object v1, v8, Lcom/discord/stores/StoreStream;->gifPicker:Lcom/discord/stores/StoreGifPicker; + iget-object v1, v8, Lcom/discord/stores/StoreStream;->clientDataState:Lcom/discord/stores/StoreClientDataState; const/16 v2, 0x9 aput-object v1, v0, v2 - iget-object v1, v8, Lcom/discord/stores/StoreStream;->stickers:Lcom/discord/stores/StoreStickers; + iget-object v1, v8, Lcom/discord/stores/StoreStream;->gifPicker:Lcom/discord/stores/StoreGifPicker; const/16 v2, 0xa aput-object v1, v0, v2 - iget-object v1, v8, Lcom/discord/stores/StoreStream;->guildMemberCounts:Lcom/discord/stores/StoreGuildMemberCounts; + iget-object v1, v8, Lcom/discord/stores/StoreStream;->stickers:Lcom/discord/stores/StoreStickers; const/16 v2, 0xb aput-object v1, v0, v2 - iget-object v1, v8, Lcom/discord/stores/StoreStream;->experiments:Lcom/discord/stores/StoreExperiments; + iget-object v1, v8, Lcom/discord/stores/StoreStream;->guildMemberCounts:Lcom/discord/stores/StoreGuildMemberCounts; const/16 v2, 0xc aput-object v1, v0, v2 - iget-object v1, v8, Lcom/discord/stores/StoreStream;->messageReplies:Lcom/discord/stores/StoreMessageReplies; + iget-object v1, v8, Lcom/discord/stores/StoreStream;->experiments:Lcom/discord/stores/StoreExperiments; const/16 v2, 0xd aput-object v1, v0, v2 - iget-object v1, v8, Lcom/discord/stores/StoreStream;->guildProfiles:Lcom/discord/stores/StoreGuildProfiles; + iget-object v1, v8, Lcom/discord/stores/StoreStream;->messageReplies:Lcom/discord/stores/StoreMessageReplies; const/16 v2, 0xe aput-object v1, v0, v2 + iget-object v1, v8, Lcom/discord/stores/StoreStream;->guildProfiles:Lcom/discord/stores/StoreGuildProfiles; + + const/16 v2, 0xf + + aput-object v1, v0, v2 + invoke-static {v0}, Lf/h/a/f/f/n/f;->listOf([Ljava/lang/Object;)Ljava/util/List; move-result-object v0 @@ -4978,7 +4988,7 @@ invoke-direct {v1, p0}, Lcom/discord/stores/StoreStream$initGatewaySocketListeners$1;->(Lcom/discord/stores/StoreStream;)V - const-string v2, "streamConnectionOpen" + const-string/jumbo v2, "streamConnectionOpen" invoke-direct {p0, v0, v2, v1}, Lcom/discord/stores/StoreStream;->dispatchSubscribe(Lrx/Observable;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V @@ -4992,7 +5002,7 @@ invoke-direct {v1, p0}, Lcom/discord/stores/StoreStream$initGatewaySocketListeners$2;->(Lcom/discord/stores/StoreStream;)V - const-string v2, "streamConnected" + const-string/jumbo v2, "streamConnected" invoke-direct {p0, v0, v2, v1}, Lcom/discord/stores/StoreStream;->dispatchSubscribe(Lrx/Observable;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V @@ -5160,7 +5170,7 @@ invoke-direct {v1, p0}, Lcom/discord/stores/StoreStream$initGatewaySocketListeners$14;->(Lcom/discord/stores/StoreStream;)V - const-string v2, "streamChannelCreated" + const-string/jumbo v2, "streamChannelCreated" invoke-direct {p0, v0, v2, v1}, Lcom/discord/stores/StoreStream;->dispatchSubscribe(Lrx/Observable;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V @@ -5174,7 +5184,7 @@ invoke-direct {v1, p0}, Lcom/discord/stores/StoreStream$initGatewaySocketListeners$15;->(Lcom/discord/stores/StoreStream;)V - const-string v2, "streamChannelDeleted" + const-string/jumbo v2, "streamChannelDeleted" invoke-direct {p0, v0, v2, v1}, Lcom/discord/stores/StoreStream;->dispatchSubscribe(Lrx/Observable;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V @@ -5188,7 +5198,7 @@ invoke-direct {v1, p0}, Lcom/discord/stores/StoreStream$initGatewaySocketListeners$16;->(Lcom/discord/stores/StoreStream;)V - const-string v2, "streamChannelUnreadUpdate" + const-string/jumbo v2, "streamChannelUnreadUpdate" invoke-direct {p0, v0, v2, v1}, Lcom/discord/stores/StoreStream;->dispatchSubscribe(Lrx/Observable;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V @@ -5504,7 +5514,7 @@ invoke-direct {v1, p0}, Lcom/discord/stores/StoreStream$initGatewaySocketListeners$38;->(Lcom/discord/stores/StoreStream;)V - const-string v2, "streamCallDelete" + const-string/jumbo v2, "streamCallDelete" invoke-direct {p0, v0, v2, v1}, Lcom/discord/stores/StoreStream;->dispatchSubscribe(Lrx/Observable;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V @@ -5518,7 +5528,7 @@ invoke-direct {v1, p0}, Lcom/discord/stores/StoreStream$initGatewaySocketListeners$39;->(Lcom/discord/stores/StoreStream;)V - const-string v2, "streamCallCreateOrUpdate" + const-string/jumbo v2, "streamCallCreateOrUpdate" invoke-direct {p0, v0, v2, v1}, Lcom/discord/stores/StoreStream;->dispatchSubscribe(Lrx/Observable;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V @@ -5744,7 +5754,7 @@ iget-object v0, p0, Lcom/discord/stores/StoreStream;->dispatcher:Lcom/discord/stores/Dispatcher; - const/16 v1, 0x2b + const/16 v1, 0x2a new-array v1, v1, [Lcom/discord/stores/DispatchHandler; @@ -5764,243 +5774,237 @@ aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->presences:Lcom/discord/stores/StoreUserPresence; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->voiceChannelSelected:Lcom/discord/stores/StoreVoiceChannelSelected; const/4 v3, 0x3 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->voiceChannelSelected:Lcom/discord/stores/StoreVoiceChannelSelected; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->voiceStates:Lcom/discord/stores/StoreVoiceStates; const/4 v3, 0x4 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->voiceStates:Lcom/discord/stores/StoreVoiceStates; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->applicationStreaming:Lcom/discord/stores/StoreApplicationStreaming; const/4 v3, 0x5 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->applicationStreaming:Lcom/discord/stores/StoreApplicationStreaming; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->callsIncoming:Lcom/discord/stores/StoreCallsIncoming; const/4 v3, 0x6 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->callsIncoming:Lcom/discord/stores/StoreCallsIncoming; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->guildSubscriptions:Lcom/discord/stores/StoreGuildSubscriptions; const/4 v3, 0x7 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->guildSubscriptions:Lcom/discord/stores/StoreGuildSubscriptions; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->lazyChannelMembersStore:Lcom/discord/stores/StoreChannelMembers; const/16 v3, 0x8 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->lazyChannelMembersStore:Lcom/discord/stores/StoreChannelMembers; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->permissions:Lcom/discord/stores/StorePermissions; const/16 v3, 0x9 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->permissions:Lcom/discord/stores/StorePermissions; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->customEmojis:Lcom/discord/stores/StoreEmojiCustom; const/16 v3, 0xa aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->customEmojis:Lcom/discord/stores/StoreEmojiCustom; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->gameParty:Lcom/discord/stores/StoreGameParty; const/16 v3, 0xb aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->gameParty:Lcom/discord/stores/StoreGameParty; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->bans:Lcom/discord/stores/StoreBans; const/16 v3, 0xc aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->bans:Lcom/discord/stores/StoreBans; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->guildEmojis:Lcom/discord/stores/StoreEmojiGuild; const/16 v3, 0xd aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->guildEmojis:Lcom/discord/stores/StoreEmojiGuild; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->auditLog:Lcom/discord/stores/StoreAuditLog; const/16 v3, 0xe aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->auditLog:Lcom/discord/stores/StoreAuditLog; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->messageAck:Lcom/discord/stores/StoreMessageAck; const/16 v3, 0xf aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->messageAck:Lcom/discord/stores/StoreMessageAck; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->messagesMostRecent:Lcom/discord/stores/StoreMessagesMostRecent; const/16 v3, 0x10 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->messagesMostRecent:Lcom/discord/stores/StoreMessagesMostRecent; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->messageUploads:Lcom/discord/stores/StoreMessageUploads; const/16 v3, 0x11 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->messageUploads:Lcom/discord/stores/StoreMessageUploads; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->messageReactions:Lcom/discord/stores/StoreMessageReactions; const/16 v3, 0x12 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->messageReactions:Lcom/discord/stores/StoreMessageReactions; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->usersTyping:Lcom/discord/stores/StoreUserTyping; const/16 v3, 0x13 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->usersTyping:Lcom/discord/stores/StoreUserTyping; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->application:Lcom/discord/stores/StoreApplication; const/16 v3, 0x14 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->application:Lcom/discord/stores/StoreApplication; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->paymentSources:Lcom/discord/stores/StorePaymentSources; const/16 v3, 0x15 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->paymentSources:Lcom/discord/stores/StorePaymentSources; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->subscriptions:Lcom/discord/stores/StoreSubscriptions; const/16 v3, 0x16 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->subscriptions:Lcom/discord/stores/StoreSubscriptions; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->mfa:Lcom/discord/stores/StoreMFA; const/16 v3, 0x17 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->mfa:Lcom/discord/stores/StoreMFA; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->guildsSorted:Lcom/discord/stores/StoreGuildsSorted; const/16 v3, 0x18 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->guildsSorted:Lcom/discord/stores/StoreGuildsSorted; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->applicationStreamPreviews:Lcom/discord/stores/StoreApplicationStreamPreviews; const/16 v3, 0x19 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->applicationStreamPreviews:Lcom/discord/stores/StoreApplicationStreamPreviews; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->premiumGuildSubscriptions:Lcom/discord/stores/StorePremiumGuildSubscription; const/16 v3, 0x1a aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->premiumGuildSubscriptions:Lcom/discord/stores/StorePremiumGuildSubscription; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->expandedGuildFolders:Lcom/discord/stores/StoreExpandedGuildFolders; const/16 v3, 0x1b aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->expandedGuildFolders:Lcom/discord/stores/StoreExpandedGuildFolders; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->mentions:Lcom/discord/stores/StoreMentions; const/16 v3, 0x1c aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->mentions:Lcom/discord/stores/StoreMentions; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->guildSettings:Lcom/discord/stores/StoreUserGuildSettings; const/16 v3, 0x1d aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->guildSettings:Lcom/discord/stores/StoreUserGuildSettings; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->entitlements:Lcom/discord/stores/StoreEntitlements; const/16 v3, 0x1e aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->entitlements:Lcom/discord/stores/StoreEntitlements; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->streamRtcConnection:Lcom/discord/stores/StoreStreamRtcConnection; const/16 v3, 0x1f aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->streamRtcConnection:Lcom/discord/stores/StoreStreamRtcConnection; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->userAffinities:Lcom/discord/stores/StoreUserAffinities; const/16 v3, 0x20 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->userAffinities:Lcom/discord/stores/StoreUserAffinities; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->audioDevices:Lcom/discord/stores/StoreAudioDevices; const/16 v3, 0x21 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->audioDevices:Lcom/discord/stores/StoreAudioDevices; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->storeChannelCategories:Lcom/discord/stores/StoreChannelCategories; const/16 v3, 0x22 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->storeChannelCategories:Lcom/discord/stores/StoreChannelCategories; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->guildTemplates:Lcom/discord/stores/StoreGuildTemplates; const/16 v3, 0x23 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->guildTemplates:Lcom/discord/stores/StoreGuildTemplates; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->tabsNavigation:Lcom/discord/stores/StoreTabsNavigation; const/16 v3, 0x24 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->tabsNavigation:Lcom/discord/stores/StoreTabsNavigation; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->userNotes:Lcom/discord/stores/StoreUserNotes; const/16 v3, 0x25 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->userNotes:Lcom/discord/stores/StoreUserNotes; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->maskedLinks:Lcom/discord/stores/StoreMaskedLinks; const/16 v3, 0x26 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->maskedLinks:Lcom/discord/stores/StoreMaskedLinks; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->stickers:Lcom/discord/stores/StoreStickers; const/16 v3, 0x27 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->stickers:Lcom/discord/stores/StoreStickers; + iget-object v2, p0, Lcom/discord/stores/StoreStream;->googlePlayPurchases:Lcom/discord/stores/StoreGooglePlayPurchases; const/16 v3, 0x28 aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->googlePlayPurchases:Lcom/discord/stores/StoreGooglePlayPurchases; - - const/16 v3, 0x29 - - aput-object v2, v1, v3 - iget-object v2, p0, Lcom/discord/stores/StoreStream;->googlePlaySkuDetails:Lcom/discord/stores/StoreGooglePlaySkuDetails; - const/16 v3, 0x2a + const/16 v3, 0x29 aput-object v2, v1, v3 diff --git a/com.discord/smali/com/discord/stores/StoreUserPresence$Companion$LocalPresenceUpdateSource$1.smali b/com.discord/smali/com/discord/stores/StoreUserPresence$Companion$LocalPresenceUpdateSource$1.smali new file mode 100644 index 0000000000..3c281bd1ec --- /dev/null +++ b/com.discord/smali/com/discord/stores/StoreUserPresence$Companion$LocalPresenceUpdateSource$1.smali @@ -0,0 +1,27 @@ +.class public final Lcom/discord/stores/StoreUserPresence$Companion$LocalPresenceUpdateSource$1; +.super Ljava/lang/Object; +.source "StoreUserPresence.kt" + +# interfaces +.implements Lcom/discord/stores/updates/ObservationDeck$UpdateSource; + + +# annotations +.annotation system Ldalvik/annotation/EnclosingClass; + value = Lcom/discord/stores/StoreUserPresence; +.end annotation + +.annotation system Ldalvik/annotation/InnerClass; + accessFlags = 0x19 + name = null +.end annotation + + +# direct methods +.method public constructor ()V + .locals 0 + + invoke-direct {p0}, Ljava/lang/Object;->()V + + return-void +.end method diff --git a/com.discord/smali/com/discord/stores/StoreUserPresence$Companion.smali b/com.discord/smali/com/discord/stores/StoreUserPresence$Companion.smali new file mode 100644 index 0000000000..a7106d9213 --- /dev/null +++ b/com.discord/smali/com/discord/stores/StoreUserPresence$Companion.smali @@ -0,0 +1,32 @@ +.class public final Lcom/discord/stores/StoreUserPresence$Companion; +.super Ljava/lang/Object; +.source "StoreUserPresence.kt" + + +# annotations +.annotation system Ldalvik/annotation/EnclosingClass; + value = Lcom/discord/stores/StoreUserPresence; +.end annotation + +.annotation system Ldalvik/annotation/InnerClass; + accessFlags = 0x19 + name = "Companion" +.end annotation + + +# direct methods +.method public constructor ()V + .locals 0 + + invoke-direct {p0}, Ljava/lang/Object;->()V + + return-void +.end method + +.method public synthetic constructor (Lkotlin/jvm/internal/DefaultConstructorMarker;)V + .locals 0 + + invoke-direct {p0}, Lcom/discord/stores/StoreUserPresence$Companion;->()V + + return-void +.end method diff --git a/com.discord/smali/com/discord/stores/StoreUserPresence$observeAllPresences$1.smali b/com.discord/smali/com/discord/stores/StoreUserPresence$observeAllPresences$1.smali new file mode 100644 index 0000000000..0e5177b91d --- /dev/null +++ b/com.discord/smali/com/discord/stores/StoreUserPresence$observeAllPresences$1.smali @@ -0,0 +1,80 @@ +.class public final Lcom/discord/stores/StoreUserPresence$observeAllPresences$1; +.super Lc0/n/c/k; +.source "StoreUserPresence.kt" + +# interfaces +.implements Lkotlin/jvm/functions/Function0; + + +# annotations +.annotation system Ldalvik/annotation/EnclosingMethod; + value = Lcom/discord/stores/StoreUserPresence;->observeAllPresences()Lrx/Observable; +.end annotation + +.annotation system Ldalvik/annotation/InnerClass; + accessFlags = 0x19 + name = null +.end annotation + +.annotation system Ldalvik/annotation/Signature; + value = { + "Lc0/n/c/k;", + "Lkotlin/jvm/functions/Function0<", + "Ljava/util/Map<", + "Ljava/lang/Long;", + "+", + "Lcom/discord/models/domain/ModelPresence;", + ">;>;" + } +.end annotation + + +# instance fields +.field public final synthetic this$0:Lcom/discord/stores/StoreUserPresence; + + +# direct methods +.method public constructor (Lcom/discord/stores/StoreUserPresence;)V + .locals 0 + + iput-object p1, p0, Lcom/discord/stores/StoreUserPresence$observeAllPresences$1;->this$0:Lcom/discord/stores/StoreUserPresence; + + const/4 p1, 0x0 + + invoke-direct {p0, p1}, Lc0/n/c/k;->(I)V + + return-void +.end method + + +# virtual methods +.method public bridge synthetic invoke()Ljava/lang/Object; + .locals 1 + + invoke-virtual {p0}, Lcom/discord/stores/StoreUserPresence$observeAllPresences$1;->invoke()Ljava/util/Map; + + move-result-object v0 + + return-object v0 +.end method + +.method public final invoke()Ljava/util/Map; + .locals 1 + .annotation system Ldalvik/annotation/Signature; + value = { + "()", + "Ljava/util/Map<", + "Ljava/lang/Long;", + "Lcom/discord/models/domain/ModelPresence;", + ">;" + } + .end annotation + + iget-object v0, p0, Lcom/discord/stores/StoreUserPresence$observeAllPresences$1;->this$0:Lcom/discord/stores/StoreUserPresence; + + invoke-static {v0}, Lcom/discord/stores/StoreUserPresence;->access$getPresencesSnapshot$p(Lcom/discord/stores/StoreUserPresence;)Ljava/util/Map; + + move-result-object v0 + + return-object v0 +.end method diff --git a/com.discord/smali/com/discord/stores/StoreUserPresence$getApplicationActivity$1.smali b/com.discord/smali/com/discord/stores/StoreUserPresence$observeApplicationActivity$1.smali similarity index 82% rename from com.discord/smali/com/discord/stores/StoreUserPresence$getApplicationActivity$1.smali rename to com.discord/smali/com/discord/stores/StoreUserPresence$observeApplicationActivity$1.smali index e3fcbf7f49..6aa49dd80c 100644 --- a/com.discord/smali/com/discord/stores/StoreUserPresence$getApplicationActivity$1.smali +++ b/com.discord/smali/com/discord/stores/StoreUserPresence$observeApplicationActivity$1.smali @@ -1,4 +1,4 @@ -.class public final Lcom/discord/stores/StoreUserPresence$getApplicationActivity$1; +.class public final Lcom/discord/stores/StoreUserPresence$observeApplicationActivity$1; .super Ljava/lang/Object; .source "StoreUserPresence.kt" @@ -8,7 +8,7 @@ # annotations .annotation system Ldalvik/annotation/EnclosingMethod; - value = Lcom/discord/stores/StoreUserPresence;->getApplicationActivity(JJ)Lrx/Observable; + value = Lcom/discord/stores/StoreUserPresence;->observeApplicationActivity(JJ)Lrx/Observable; .end annotation .annotation system Ldalvik/annotation/InnerClass; @@ -40,7 +40,7 @@ .method public constructor (J)V .locals 0 - iput-wide p1, p0, Lcom/discord/stores/StoreUserPresence$getApplicationActivity$1;->$applicationId:J + iput-wide p1, p0, Lcom/discord/stores/StoreUserPresence$observeApplicationActivity$1;->$applicationId:J invoke-direct {p0}, Ljava/lang/Object;->()V @@ -94,7 +94,7 @@ move-result-wide v2 - iget-wide v4, p0, Lcom/discord/stores/StoreUserPresence$getApplicationActivity$1;->$applicationId:J + iget-wide v4, p0, Lcom/discord/stores/StoreUserPresence$observeApplicationActivity$1;->$applicationId:J cmp-long v6, v2, v4 @@ -125,7 +125,7 @@ check-cast p1, Lcom/discord/models/domain/ModelPresence; - invoke-virtual {p0, p1}, Lcom/discord/stores/StoreUserPresence$getApplicationActivity$1;->call(Lcom/discord/models/domain/ModelPresence;)Lcom/discord/models/domain/activity/ModelActivity; + invoke-virtual {p0, p1}, Lcom/discord/stores/StoreUserPresence$observeApplicationActivity$1;->call(Lcom/discord/models/domain/ModelPresence;)Lcom/discord/models/domain/activity/ModelActivity; move-result-object p1 diff --git a/com.discord/smali/com/discord/stores/StoreUserPresence$observeLocalPresence$1.smali b/com.discord/smali/com/discord/stores/StoreUserPresence$observeLocalPresence$1.smali new file mode 100644 index 0000000000..ebdb9c3c0e --- /dev/null +++ b/com.discord/smali/com/discord/stores/StoreUserPresence$observeLocalPresence$1.smali @@ -0,0 +1,68 @@ +.class public final Lcom/discord/stores/StoreUserPresence$observeLocalPresence$1; +.super Lc0/n/c/k; +.source "StoreUserPresence.kt" + +# interfaces +.implements Lkotlin/jvm/functions/Function0; + + +# annotations +.annotation system Ldalvik/annotation/EnclosingMethod; + value = Lcom/discord/stores/StoreUserPresence;->observeLocalPresence()Lrx/Observable; +.end annotation + +.annotation system Ldalvik/annotation/InnerClass; + accessFlags = 0x19 + name = null +.end annotation + +.annotation system Ldalvik/annotation/Signature; + value = { + "Lc0/n/c/k;", + "Lkotlin/jvm/functions/Function0<", + "Lcom/discord/models/domain/ModelPresence;", + ">;" + } +.end annotation + + +# instance fields +.field public final synthetic this$0:Lcom/discord/stores/StoreUserPresence; + + +# direct methods +.method public constructor (Lcom/discord/stores/StoreUserPresence;)V + .locals 0 + + iput-object p1, p0, Lcom/discord/stores/StoreUserPresence$observeLocalPresence$1;->this$0:Lcom/discord/stores/StoreUserPresence; + + const/4 p1, 0x0 + + invoke-direct {p0, p1}, Lc0/n/c/k;->(I)V + + return-void +.end method + + +# virtual methods +.method public final invoke()Lcom/discord/models/domain/ModelPresence; + .locals 1 + + iget-object v0, p0, Lcom/discord/stores/StoreUserPresence$observeLocalPresence$1;->this$0:Lcom/discord/stores/StoreUserPresence; + + invoke-static {v0}, Lcom/discord/stores/StoreUserPresence;->access$getLocalPresenceSnapshot$p(Lcom/discord/stores/StoreUserPresence;)Lcom/discord/models/domain/ModelPresence; + + move-result-object v0 + + return-object v0 +.end method + +.method public bridge synthetic invoke()Ljava/lang/Object; + .locals 1 + + invoke-virtual {p0}, Lcom/discord/stores/StoreUserPresence$observeLocalPresence$1;->invoke()Lcom/discord/models/domain/ModelPresence; + + move-result-object v0 + + return-object v0 +.end method diff --git a/com.discord/smali/com/discord/stores/StoreUserPresence$getForUserId$1.smali b/com.discord/smali/com/discord/stores/StoreUserPresence$observePresenceForUser$1.smali similarity index 80% rename from com.discord/smali/com/discord/stores/StoreUserPresence$getForUserId$1.smali rename to com.discord/smali/com/discord/stores/StoreUserPresence$observePresenceForUser$1.smali index b9bda3d857..ab3e2a956a 100644 --- a/com.discord/smali/com/discord/stores/StoreUserPresence$getForUserId$1.smali +++ b/com.discord/smali/com/discord/stores/StoreUserPresence$observePresenceForUser$1.smali @@ -1,4 +1,4 @@ -.class public final Lcom/discord/stores/StoreUserPresence$getForUserId$1; +.class public final Lcom/discord/stores/StoreUserPresence$observePresenceForUser$1; .super Ljava/lang/Object; .source "StoreUserPresence.kt" @@ -8,7 +8,7 @@ # annotations .annotation system Ldalvik/annotation/EnclosingMethod; - value = Lcom/discord/stores/StoreUserPresence;->getForUserId(J)Lrx/Observable; + value = Lcom/discord/stores/StoreUserPresence;->observePresenceForUser(J)Lrx/Observable; .end annotation .annotation system Ldalvik/annotation/InnerClass; @@ -44,7 +44,7 @@ .method public constructor (J)V .locals 0 - iput-wide p1, p0, Lcom/discord/stores/StoreUserPresence$getForUserId$1;->$userId:J + iput-wide p1, p0, Lcom/discord/stores/StoreUserPresence$observePresenceForUser$1;->$userId:J invoke-direct {p0}, Ljava/lang/Object;->()V @@ -66,7 +66,7 @@ } .end annotation - iget-wide v0, p0, Lcom/discord/stores/StoreUserPresence$getForUserId$1;->$userId:J + iget-wide v0, p0, Lcom/discord/stores/StoreUserPresence$observePresenceForUser$1;->$userId:J invoke-static {v0, v1}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; @@ -86,7 +86,7 @@ check-cast p1, Ljava/util/Map; - invoke-virtual {p0, p1}, Lcom/discord/stores/StoreUserPresence$getForUserId$1;->call(Ljava/util/Map;)Lcom/discord/models/domain/ModelPresence; + invoke-virtual {p0, p1}, Lcom/discord/stores/StoreUserPresence$observePresenceForUser$1;->call(Ljava/util/Map;)Lcom/discord/models/domain/ModelPresence; move-result-object p1 diff --git a/com.discord/smali/com/discord/stores/StoreUserPresence$getForUserIds$1.smali b/com.discord/smali/com/discord/stores/StoreUserPresence$observePresencesForUsers$1.smali similarity index 86% rename from com.discord/smali/com/discord/stores/StoreUserPresence$getForUserIds$1.smali rename to com.discord/smali/com/discord/stores/StoreUserPresence$observePresencesForUsers$1.smali index 98c61e29c8..829c769a66 100644 --- a/com.discord/smali/com/discord/stores/StoreUserPresence$getForUserIds$1.smali +++ b/com.discord/smali/com/discord/stores/StoreUserPresence$observePresencesForUsers$1.smali @@ -1,4 +1,4 @@ -.class public final Lcom/discord/stores/StoreUserPresence$getForUserIds$1; +.class public final Lcom/discord/stores/StoreUserPresence$observePresencesForUsers$1; .super Ljava/lang/Object; .source "StoreUserPresence.kt" @@ -8,7 +8,7 @@ # annotations .annotation system Ldalvik/annotation/EnclosingMethod; - value = Lcom/discord/stores/StoreUserPresence;->getForUserIds(Ljava/util/Collection;)Lrx/Observable; + value = Lcom/discord/stores/StoreUserPresence;->observePresencesForUsers(Ljava/util/Collection;)Lrx/Observable; .end annotation .annotation system Ldalvik/annotation/InnerClass; @@ -47,7 +47,7 @@ .method public constructor (Ljava/util/Collection;)V .locals 0 - iput-object p1, p0, Lcom/discord/stores/StoreUserPresence$getForUserIds$1;->$userIds:Ljava/util/Collection; + iput-object p1, p0, Lcom/discord/stores/StoreUserPresence$observePresencesForUsers$1;->$userIds:Ljava/util/Collection; invoke-direct {p0}, Ljava/lang/Object;->()V @@ -61,7 +61,7 @@ check-cast p1, Ljava/util/Map; - invoke-virtual {p0, p1}, Lcom/discord/stores/StoreUserPresence$getForUserIds$1;->call(Ljava/util/Map;)Ljava/util/Map; + invoke-virtual {p0, p1}, Lcom/discord/stores/StoreUserPresence$observePresencesForUsers$1;->call(Ljava/util/Map;)Ljava/util/Map; move-result-object p1 @@ -124,7 +124,7 @@ move-result-wide v2 - iget-object v4, p0, Lcom/discord/stores/StoreUserPresence$getForUserIds$1;->$userIds:Ljava/util/Collection; + iget-object v4, p0, Lcom/discord/stores/StoreUserPresence$observePresencesForUsers$1;->$userIds:Ljava/util/Collection; invoke-static {v2, v3}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; diff --git a/com.discord/smali/com/discord/stores/StoreUserPresence.smali b/com.discord/smali/com/discord/stores/StoreUserPresence.smali index 2f20b93e82..a8d32f204e 100644 --- a/com.discord/smali/com/discord/stores/StoreUserPresence.smali +++ b/com.discord/smali/com/discord/stores/StoreUserPresence.smali @@ -1,41 +1,34 @@ .class public final Lcom/discord/stores/StoreUserPresence; -.super Lcom/discord/stores/Store; +.super Lcom/discord/stores/StoreV2; .source "StoreUserPresence.kt" -# interfaces -.implements Lcom/discord/stores/DispatchHandler; - # annotations .annotation system Ldalvik/annotation/MemberClasses; value = { - Lcom/discord/stores/StoreUserPresence$TimestampedPresence; + Lcom/discord/stores/StoreUserPresence$TimestampedPresence;, + Lcom/discord/stores/StoreUserPresence$Companion; } .end annotation +# static fields +.field public static final Companion:Lcom/discord/stores/StoreUserPresence$Companion; + +.field public static final LocalPresenceUpdateSource:Lcom/discord/stores/StoreUserPresence$Companion$LocalPresenceUpdateSource$1; + + # instance fields .field public final clock:Lcom/discord/utilities/time/Clock; -.field public isDirty:Z - -.field public isLocalPresenceDirty:Z - .field public localPresence:Lcom/discord/models/domain/ModelPresence; -.field public final localPresenceSubject:Lrx/subjects/SerializedSubject; - .annotation system Ldalvik/annotation/Signature; - value = { - "Lrx/subjects/SerializedSubject<", - "Lcom/discord/models/domain/ModelPresence;", - "Lcom/discord/models/domain/ModelPresence;", - ">;" - } - .end annotation -.end field +.field public localPresenceSnapshot:Lcom/discord/models/domain/ModelPresence; .field public meUser:Lcom/discord/models/domain/ModelUser; +.field public final observationDeck:Lcom/discord/stores/updates/ObservationDeck; + .field public final presences:Lcom/discord/utilities/collections/SnowflakePartitionMap$CopiablePartitionMap; .annotation system Ldalvik/annotation/Signature; value = { @@ -46,18 +39,13 @@ .end annotation .end field -.field public final presencesPublisher:Lrx/subjects/SerializedSubject; +.field public presencesSnapshot:Ljava/util/Map; .annotation system Ldalvik/annotation/Signature; value = { - "Lrx/subjects/SerializedSubject<", "Ljava/util/Map<", "Ljava/lang/Long;", "Lcom/discord/models/domain/ModelPresence;", - ">;", - "Ljava/util/Map<", - "Ljava/lang/Long;", - "Lcom/discord/models/domain/ModelPresence;", - ">;>;" + ">;" } .end annotation .end field @@ -79,7 +67,27 @@ # direct methods -.method public constructor (Lcom/discord/utilities/time/Clock;Lcom/discord/stores/StoreStream;)V +.method public static constructor ()V + .locals 2 + + new-instance v0, Lcom/discord/stores/StoreUserPresence$Companion; + + const/4 v1, 0x0 + + invoke-direct {v0, v1}, Lcom/discord/stores/StoreUserPresence$Companion;->(Lkotlin/jvm/internal/DefaultConstructorMarker;)V + + sput-object v0, Lcom/discord/stores/StoreUserPresence;->Companion:Lcom/discord/stores/StoreUserPresence$Companion; + + new-instance v0, Lcom/discord/stores/StoreUserPresence$Companion$LocalPresenceUpdateSource$1; + + invoke-direct {v0}, Lcom/discord/stores/StoreUserPresence$Companion$LocalPresenceUpdateSource$1;->()V + + sput-object v0, Lcom/discord/stores/StoreUserPresence;->LocalPresenceUpdateSource:Lcom/discord/stores/StoreUserPresence$Companion$LocalPresenceUpdateSource$1; + + return-void +.end method + +.method public constructor (Lcom/discord/utilities/time/Clock;Lcom/discord/stores/StoreStream;Lcom/discord/stores/updates/ObservationDeck;)V .locals 10 const-string v0, "clock" @@ -90,21 +98,27 @@ invoke-static {p2, v0}, Lc0/n/c/j;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V - invoke-direct {p0}, Lcom/discord/stores/Store;->()V + const-string v0, "observationDeck" + + invoke-static {p3, v0}, Lc0/n/c/j;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V + + invoke-direct {p0}, Lcom/discord/stores/StoreV2;->()V iput-object p1, p0, Lcom/discord/stores/StoreUserPresence;->clock:Lcom/discord/utilities/time/Clock; iput-object p2, p0, Lcom/discord/stores/StoreUserPresence;->stream:Lcom/discord/stores/StoreStream; + iput-object p3, p0, Lcom/discord/stores/StoreUserPresence;->observationDeck:Lcom/discord/stores/updates/ObservationDeck; + new-instance p1, Lcom/discord/utilities/collections/SnowflakePartitionMap$CopiablePartitionMap; const/4 p2, 0x0 - const/4 v0, 0x1 + const/4 p3, 0x1 - const/4 v1, 0x0 + const/4 v0, 0x0 - invoke-direct {p1, p2, v0, v1}, Lcom/discord/utilities/collections/SnowflakePartitionMap$CopiablePartitionMap;->(IILkotlin/jvm/internal/DefaultConstructorMarker;)V + invoke-direct {p1, p2, p3, v0}, Lcom/discord/utilities/collections/SnowflakePartitionMap$CopiablePartitionMap;->(IILkotlin/jvm/internal/DefaultConstructorMarker;)V iput-object p1, p0, Lcom/discord/stores/StoreUserPresence;->presences:Lcom/discord/utilities/collections/SnowflakePartitionMap$CopiablePartitionMap; @@ -114,19 +128,11 @@ iput-object p1, p0, Lcom/discord/stores/StoreUserPresence;->userGuildPresences:Ljava/util/HashMap; - new-instance p1, Lrx/subjects/SerializedSubject; + new-instance p1, Ljava/util/HashMap; - new-instance p2, Ljava/util/HashMap; + invoke-direct {p1}, Ljava/util/HashMap;->()V - invoke-direct {p2}, Ljava/util/HashMap;->()V - - invoke-static {p2}, Lrx/subjects/BehaviorSubject;->h0(Ljava/lang/Object;)Lrx/subjects/BehaviorSubject; - - move-result-object p2 - - invoke-direct {p1, p2}, Lrx/subjects/SerializedSubject;->(Lrx/subjects/Subject;)V - - iput-object p1, p0, Lcom/discord/stores/StoreUserPresence;->presencesPublisher:Lrx/subjects/SerializedSubject; + iput-object p1, p0, Lcom/discord/stores/StoreUserPresence;->presencesSnapshot:Ljava/util/Map; new-instance p1, Lcom/discord/models/domain/ModelPresence; @@ -152,15 +158,47 @@ iput-object p1, p0, Lcom/discord/stores/StoreUserPresence;->localPresence:Lcom/discord/models/domain/ModelPresence; - new-instance p2, Lrx/subjects/SerializedSubject; + const/4 v1, 0x0 - invoke-static {p1}, Lrx/subjects/BehaviorSubject;->h0(Ljava/lang/Object;)Lrx/subjects/BehaviorSubject; + const/16 v8, 0x3f + + invoke-static/range {v0 .. v9}, Lcom/discord/models/domain/ModelPresence;->copy$default(Lcom/discord/models/domain/ModelPresence;Lcom/discord/models/domain/ModelPresence$Status;Ljava/util/List;Lcom/discord/models/domain/ModelPresence$ClientStatuses;Lcom/discord/models/domain/ModelUser;Ljava/lang/Long;JILjava/lang/Object;)Lcom/discord/models/domain/ModelPresence; move-result-object p1 - invoke-direct {p2, p1}, Lrx/subjects/SerializedSubject;->(Lrx/subjects/Subject;)V + iput-object p1, p0, Lcom/discord/stores/StoreUserPresence;->localPresenceSnapshot:Lcom/discord/models/domain/ModelPresence; - iput-object p2, p0, Lcom/discord/stores/StoreUserPresence;->localPresenceSubject:Lrx/subjects/SerializedSubject; + return-void +.end method + +.method public static final synthetic access$getLocalPresenceSnapshot$p(Lcom/discord/stores/StoreUserPresence;)Lcom/discord/models/domain/ModelPresence; + .locals 0 + + iget-object p0, p0, Lcom/discord/stores/StoreUserPresence;->localPresenceSnapshot:Lcom/discord/models/domain/ModelPresence; + + return-object p0 +.end method + +.method public static final synthetic access$getPresencesSnapshot$p(Lcom/discord/stores/StoreUserPresence;)Ljava/util/Map; + .locals 0 + + iget-object p0, p0, Lcom/discord/stores/StoreUserPresence;->presencesSnapshot:Ljava/util/Map; + + return-object p0 +.end method + +.method public static final synthetic access$setLocalPresenceSnapshot$p(Lcom/discord/stores/StoreUserPresence;Lcom/discord/models/domain/ModelPresence;)V + .locals 0 + + iput-object p1, p0, Lcom/discord/stores/StoreUserPresence;->localPresenceSnapshot:Lcom/discord/models/domain/ModelPresence; + + return-void +.end method + +.method public static final synthetic access$setPresencesSnapshot$p(Lcom/discord/stores/StoreUserPresence;Ljava/util/Map;)V + .locals 0 + + iput-object p1, p0, Lcom/discord/stores/StoreUserPresence;->presencesSnapshot:Ljava/util/Map; return-void .end method @@ -277,289 +315,283 @@ .end method .method private final flattenPresence(J)V - .locals 16 + .locals 13 .annotation runtime Lcom/discord/stores/StoreThread; .end annotation - move-object/from16 v0, p0 + iget-object v0, p0, Lcom/discord/stores/StoreUserPresence;->userGuildPresences:Ljava/util/HashMap; - iget-object v1, v0, Lcom/discord/stores/StoreUserPresence;->userGuildPresences:Ljava/util/HashMap; - - invoke-static/range {p1 .. p2}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; - - move-result-object v2 - - invoke-virtual {v1, v2}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object; + invoke-static {p1, p2}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; move-result-object v1 - check-cast v1, Ljava/util/Map; + invoke-virtual {v0, v1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object; - const/4 v2, 0x0 + move-result-object v0 - if-eqz v1, :cond_4 + check-cast v0, Ljava/util/Map; - invoke-interface {v1}, Ljava/util/Map;->values()Ljava/util/Collection; + const/4 v1, 0x0 - move-result-object v1 + if-eqz v0, :cond_4 - if-eqz v1, :cond_4 + invoke-interface {v0}, Ljava/util/Map;->values()Ljava/util/Collection; - invoke-interface {v1}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator; + move-result-object v0 - move-result-object v1 + if-eqz v0, :cond_4 - invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z + invoke-interface {v0}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator; - move-result v3 + move-result-object v0 - if-nez v3, :cond_0 + invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z - move-object v3, v2 + move-result v2 + + if-nez v2, :cond_0 + + move-object v2, v1 goto :goto_0 :cond_0 - invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; + invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object; - move-result-object v3 + move-result-object v2 - invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z + invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z - move-result v4 + move-result v3 - if-nez v4, :cond_1 + if-nez v3, :cond_1 goto :goto_0 :cond_1 - move-object v4, v3 + move-object v3, v2 - check-cast v4, Lcom/discord/stores/StoreUserPresence$TimestampedPresence; - - invoke-virtual {v4}, Lcom/discord/stores/StoreUserPresence$TimestampedPresence;->getTimestamp()J - - move-result-wide v4 - - :cond_2 - invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; - - move-result-object v6 - - move-object v7, v6 - - check-cast v7, Lcom/discord/stores/StoreUserPresence$TimestampedPresence; - - invoke-virtual {v7}, Lcom/discord/stores/StoreUserPresence$TimestampedPresence;->getTimestamp()J - - move-result-wide v7 - - cmp-long v9, v4, v7 - - if-gez v9, :cond_3 - - move-object v3, v6 - - move-wide v4, v7 - - :cond_3 - invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z - - move-result v6 - - if-nez v6, :cond_2 - - :goto_0 check-cast v3, Lcom/discord/stores/StoreUserPresence$TimestampedPresence; - if-eqz v3, :cond_4 + invoke-virtual {v3}, Lcom/discord/stores/StoreUserPresence$TimestampedPresence;->getTimestamp()J - invoke-virtual {v3}, Lcom/discord/stores/StoreUserPresence$TimestampedPresence;->getPresence()Lcom/discord/models/domain/ModelPresence; + move-result-wide v3 - move-result-object v1 + :cond_2 + invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object; + + move-result-object v5 + + move-object v6, v5 + + check-cast v6, Lcom/discord/stores/StoreUserPresence$TimestampedPresence; + + invoke-virtual {v6}, Lcom/discord/stores/StoreUserPresence$TimestampedPresence;->getTimestamp()J + + move-result-wide v6 + + cmp-long v8, v3, v6 + + if-gez v8, :cond_3 + + move-object v2, v5 + + move-wide v3, v6 + + :cond_3 + invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z + + move-result v5 + + if-nez v5, :cond_2 + + :goto_0 + check-cast v2, Lcom/discord/stores/StoreUserPresence$TimestampedPresence; + + if-eqz v2, :cond_4 + + invoke-virtual {v2}, Lcom/discord/stores/StoreUserPresence$TimestampedPresence;->getPresence()Lcom/discord/models/domain/ModelPresence; + + move-result-object v0 goto :goto_1 :cond_4 - move-object v1, v2 + move-object v0, v1 :goto_1 - if-eqz v1, :cond_5 + if-eqz v0, :cond_5 - invoke-virtual {v1}, Lcom/discord/models/domain/ModelPresence;->getStatus()Lcom/discord/models/domain/ModelPresence$Status; + invoke-virtual {v0}, Lcom/discord/models/domain/ModelPresence;->getStatus()Lcom/discord/models/domain/ModelPresence$Status; - move-result-object v3 + move-result-object v2 - if-eqz v3, :cond_5 + if-eqz v2, :cond_5 goto :goto_2 :cond_5 - sget-object v3, Lcom/discord/models/domain/ModelPresence$Status;->OFFLINE:Lcom/discord/models/domain/ModelPresence$Status; + sget-object v2, Lcom/discord/models/domain/ModelPresence$Status;->OFFLINE:Lcom/discord/models/domain/ModelPresence$Status; :goto_2 - move-object v5, v3 + move-object v4, v2 - if-eqz v1, :cond_6 + if-eqz v0, :cond_6 - invoke-virtual {v1}, Lcom/discord/models/domain/ModelPresence;->getActivities()Ljava/util/List; + invoke-virtual {v0}, Lcom/discord/models/domain/ModelPresence;->getActivities()Ljava/util/List; + + move-result-object v2 + + if-eqz v2, :cond_6 + + sget-object v3, Lcom/discord/utilities/presence/PresenceUtils;->INSTANCE:Lcom/discord/utilities/presence/PresenceUtils; + + invoke-virtual {v3}, Lcom/discord/utilities/presence/PresenceUtils;->getACTIVITY_COMPARATOR$app_productionDiscordExternalRelease()Ljava/util/Comparator; move-result-object v3 - if-eqz v3, :cond_6 + invoke-static {v2, v3}, Lc0/i/f;->sortedWith(Ljava/lang/Iterable;Ljava/util/Comparator;)Ljava/util/List; - sget-object v4, Lcom/discord/utilities/presence/PresenceUtils;->INSTANCE:Lcom/discord/utilities/presence/PresenceUtils; + move-result-object v2 - invoke-virtual {v4}, Lcom/discord/utilities/presence/PresenceUtils;->getACTIVITY_COMPARATOR$app_productionDiscordExternalRelease()Ljava/util/Comparator; + invoke-static {v2}, Lc0/i/f;->reversed(Ljava/lang/Iterable;)Ljava/util/List; - move-result-object v4 + move-result-object v2 - invoke-static {v3, v4}, Lc0/i/f;->sortedWith(Ljava/lang/Iterable;Ljava/util/Comparator;)Ljava/util/List; - - move-result-object v3 - - invoke-static {v3}, Lc0/i/f;->reversed(Ljava/lang/Iterable;)Ljava/util/List; - - move-result-object v3 - - move-object v6, v3 + move-object v5, v2 goto :goto_3 :cond_6 - move-object v6, v2 + move-object v5, v1 :goto_3 - if-eqz v1, :cond_7 + if-eqz v0, :cond_7 - invoke-virtual {v1}, Lcom/discord/models/domain/ModelPresence;->getClientStatuses()Lcom/discord/models/domain/ModelPresence$ClientStatuses; + invoke-virtual {v0}, Lcom/discord/models/domain/ModelPresence;->getClientStatuses()Lcom/discord/models/domain/ModelPresence$ClientStatuses; - move-result-object v1 + move-result-object v0 goto :goto_4 :cond_7 - move-object v1, v2 + move-object v0, v1 :goto_4 - sget-object v3, Lcom/discord/models/domain/ModelPresence$Status;->OFFLINE:Lcom/discord/models/domain/ModelPresence$Status; + sget-object v2, Lcom/discord/models/domain/ModelPresence$Status;->OFFLINE:Lcom/discord/models/domain/ModelPresence$Status; - const/4 v14, 0x1 + if-ne v4, v2, :cond_8 - if-ne v5, v3, :cond_8 + iget-object v0, p0, Lcom/discord/stores/StoreUserPresence;->userGuildPresences:Ljava/util/HashMap; - iget-object v1, v0, Lcom/discord/stores/StoreUserPresence;->userGuildPresences:Ljava/util/HashMap; - - invoke-static/range {p1 .. p2}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; - - move-result-object v2 - - invoke-virtual {v1, v2}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; - - iget-object v1, v0, Lcom/discord/stores/StoreUserPresence;->presences:Lcom/discord/utilities/collections/SnowflakePartitionMap$CopiablePartitionMap; - - invoke-static/range {p1 .. p2}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; - - move-result-object v2 - - invoke-virtual {v1, v2}, Lcom/discord/utilities/collections/SnowflakePartitionMap$CopiablePartitionMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; + invoke-static {p1, p2}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; move-result-object v1 - check-cast v1, Lcom/discord/models/domain/ModelPresence; + invoke-virtual {v0, v1}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; - if-eqz v1, :cond_c + iget-object v0, p0, Lcom/discord/stores/StoreUserPresence;->presences:Lcom/discord/utilities/collections/SnowflakePartitionMap$CopiablePartitionMap; - iput-boolean v14, v0, Lcom/discord/stores/StoreUserPresence;->isDirty:Z + invoke-static {p1, p2}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; + + move-result-object p1 + + invoke-virtual {v0, p1}, Lcom/discord/utilities/collections/SnowflakePartitionMap$CopiablePartitionMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; + + move-result-object p1 + + if-eqz p1, :cond_c + + invoke-virtual {p0}, Lcom/discord/stores/StoreV2;->markChanged()V goto :goto_6 :cond_8 - iget-object v3, v0, Lcom/discord/stores/StoreUserPresence;->presences:Lcom/discord/utilities/collections/SnowflakePartitionMap$CopiablePartitionMap; + iget-object v2, p0, Lcom/discord/stores/StoreUserPresence;->presences:Lcom/discord/utilities/collections/SnowflakePartitionMap$CopiablePartitionMap; - invoke-static/range {p1 .. p2}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; - - move-result-object v4 - - invoke-virtual {v3, v4}, Lcom/discord/utilities/collections/SnowflakePartitionMap$CopiablePartitionMap;->get(Ljava/lang/Object;)Ljava/lang/Object; + invoke-static {p1, p2}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; move-result-object v3 - check-cast v3, Lcom/discord/models/domain/ModelPresence; - - if-eqz v3, :cond_9 - - invoke-virtual {v3}, Lcom/discord/models/domain/ModelPresence;->getStatus()Lcom/discord/models/domain/ModelPresence$Status; + invoke-virtual {v2, v3}, Lcom/discord/utilities/collections/SnowflakePartitionMap$CopiablePartitionMap;->get(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v2 + check-cast v2, Lcom/discord/models/domain/ModelPresence; + + if-eqz v2, :cond_9 + + invoke-virtual {v2}, Lcom/discord/models/domain/ModelPresence;->getStatus()Lcom/discord/models/domain/ModelPresence$Status; + + move-result-object v1 + :cond_9 - if-ne v2, v5, :cond_a + if-ne v1, v4, :cond_a - invoke-virtual {v3}, Lcom/discord/models/domain/ModelPresence;->getActivities()Ljava/util/List; + invoke-virtual {v2}, Lcom/discord/models/domain/ModelPresence;->getActivities()Ljava/util/List; - move-result-object v2 + move-result-object v1 - invoke-static {v2, v6}, Lc0/n/c/j;->areEqual(Ljava/lang/Object;Ljava/lang/Object;)Z + invoke-static {v1, v5}, Lc0/n/c/j;->areEqual(Ljava/lang/Object;Ljava/lang/Object;)Z - move-result v2 + move-result v1 - xor-int/2addr v2, v14 + xor-int/lit8 v1, v1, 0x1 - if-nez v2, :cond_a + if-nez v1, :cond_a - invoke-virtual {v3}, Lcom/discord/models/domain/ModelPresence;->getClientStatuses()Lcom/discord/models/domain/ModelPresence$ClientStatuses; + invoke-virtual {v2}, Lcom/discord/models/domain/ModelPresence;->getClientStatuses()Lcom/discord/models/domain/ModelPresence$ClientStatuses; - move-result-object v2 + move-result-object v1 - invoke-static {v2, v1}, Lc0/n/c/j;->areEqual(Ljava/lang/Object;Ljava/lang/Object;)Z + invoke-static {v1, v0}, Lc0/n/c/j;->areEqual(Ljava/lang/Object;Ljava/lang/Object;)Z - move-result v2 + move-result v1 - xor-int/2addr v2, v14 + xor-int/lit8 v1, v1, 0x1 - if-eqz v2, :cond_c + if-eqz v1, :cond_c :cond_a - iget-object v2, v0, Lcom/discord/stores/StoreUserPresence;->presences:Lcom/discord/utilities/collections/SnowflakePartitionMap$CopiablePartitionMap; + iget-object v1, p0, Lcom/discord/stores/StoreUserPresence;->presences:Lcom/discord/utilities/collections/SnowflakePartitionMap$CopiablePartitionMap; - invoke-static/range {p1 .. p2}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; + invoke-static {p1, p2}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; - move-result-object v3 + move-result-object p1 - new-instance v15, Lcom/discord/models/domain/ModelPresence; + new-instance p2, Lcom/discord/models/domain/ModelPresence; - if-eqz v1, :cond_b + if-eqz v0, :cond_b goto :goto_5 :cond_b - sget-object v1, Lcom/discord/models/domain/ModelPresence$ClientStatuses;->Companion:Lcom/discord/models/domain/ModelPresence$ClientStatuses$Companion; + sget-object v0, Lcom/discord/models/domain/ModelPresence$ClientStatuses;->Companion:Lcom/discord/models/domain/ModelPresence$ClientStatuses$Companion; - invoke-virtual {v1}, Lcom/discord/models/domain/ModelPresence$ClientStatuses$Companion;->empty()Lcom/discord/models/domain/ModelPresence$ClientStatuses; + invoke-virtual {v0}, Lcom/discord/models/domain/ModelPresence$ClientStatuses$Companion;->empty()Lcom/discord/models/domain/ModelPresence$ClientStatuses; - move-result-object v1 + move-result-object v0 :goto_5 - move-object v7, v1 + move-object v6, v0 + + const/4 v7, 0x0 const/4 v8, 0x0 - const/4 v9, 0x0 + const-wide/16 v9, 0x0 - const-wide/16 v10, 0x0 + const/16 v11, 0x38 - const/16 v12, 0x38 + const/4 v12, 0x0 - const/4 v13, 0x0 + move-object v3, p2 - move-object v4, v15 + invoke-direct/range {v3 .. v12}, Lcom/discord/models/domain/ModelPresence;->(Lcom/discord/models/domain/ModelPresence$Status;Ljava/util/List;Lcom/discord/models/domain/ModelPresence$ClientStatuses;Lcom/discord/models/domain/ModelUser;Ljava/lang/Long;JILkotlin/jvm/internal/DefaultConstructorMarker;)V - invoke-direct/range {v4 .. v13}, Lcom/discord/models/domain/ModelPresence;->(Lcom/discord/models/domain/ModelPresence$Status;Ljava/util/List;Lcom/discord/models/domain/ModelPresence$ClientStatuses;Lcom/discord/models/domain/ModelUser;Ljava/lang/Long;JILkotlin/jvm/internal/DefaultConstructorMarker;)V + invoke-interface {v1, p1, p2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; - invoke-interface {v2, v3, v15}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; - - iput-boolean v14, v0, Lcom/discord/stores/StoreUserPresence;->isDirty:Z + invoke-virtual {p0}, Lcom/discord/stores/StoreV2;->markChanged()V :cond_c :goto_6 @@ -1075,13 +1107,15 @@ iput-object v2, v0, Lcom/discord/stores/StoreUserPresence;->localPresence:Lcom/discord/models/domain/ModelPresence; - iget-object v4, v0, Lcom/discord/stores/StoreUserPresence;->localPresenceSubject:Lrx/subjects/SerializedSubject; + new-array v2, v14, [Lcom/discord/stores/updates/ObservationDeck$UpdateSource; - iget-object v4, v4, Lrx/subjects/SerializedSubject;->e:Ll0/n/c; + const/4 v4, 0x0 - invoke-virtual {v4, v2}, Ll0/n/c;->onNext(Ljava/lang/Object;)V + sget-object v5, Lcom/discord/stores/StoreUserPresence;->LocalPresenceUpdateSource:Lcom/discord/stores/StoreUserPresence$Companion$LocalPresenceUpdateSource$1; - iput-boolean v14, v0, Lcom/discord/stores/StoreUserPresence;->isLocalPresenceDirty:Z + aput-object v5, v2, v4 + + invoke-virtual {v0, v2}, Lcom/discord/stores/StoreV2;->markChanged([Lcom/discord/stores/updates/ObservationDeck$UpdateSource;)V :cond_9 const-wide v14, 0x7fffffffffffffffL @@ -1120,9 +1154,9 @@ if-nez v1, :cond_a - const/4 v1, 0x0 + sget-object v1, Lcom/discord/stores/StoreUserPresence;->LocalPresenceUpdateSource:Lcom/discord/stores/StoreUserPresence$Companion$LocalPresenceUpdateSource$1; - iput-boolean v1, v0, Lcom/discord/stores/StoreUserPresence;->isLocalPresenceDirty:Z + invoke-virtual {v0, v1}, Lcom/discord/stores/StoreV2;->markUnchanged(Lcom/discord/stores/updates/ObservationDeck$UpdateSource;)V :cond_a return-void @@ -1130,167 +1164,6 @@ # virtual methods -.method public final get()Lrx/Observable; - .locals 1 - .annotation system Ldalvik/annotation/Signature; - value = { - "()", - "Lrx/Observable<", - "Ljava/util/Map<", - "Ljava/lang/Long;", - "Lcom/discord/models/domain/ModelPresence;", - ">;>;" - } - .end annotation - - iget-object v0, p0, Lcom/discord/stores/StoreUserPresence;->presencesPublisher:Lrx/subjects/SerializedSubject; - - invoke-static {v0}, Lcom/discord/utilities/rx/ObservableExtensionsKt;->computationBuffered(Lrx/Observable;)Lrx/Observable; - - move-result-object v0 - - return-object v0 -.end method - -.method public final getApplicationActivity(JJ)Lrx/Observable; - .locals 0 - .annotation system Ldalvik/annotation/Signature; - value = { - "(JJ)", - "Lrx/Observable<", - "Lcom/discord/models/domain/activity/ModelActivity;", - ">;" - } - .end annotation - - invoke-virtual {p0, p1, p2}, Lcom/discord/stores/StoreUserPresence;->getForUserId(J)Lrx/Observable; - - move-result-object p1 - - new-instance p2, Lcom/discord/stores/StoreUserPresence$getApplicationActivity$1; - - invoke-direct {p2, p3, p4}, Lcom/discord/stores/StoreUserPresence$getApplicationActivity$1;->(J)V - - invoke-virtual {p1, p2}, Lrx/Observable;->D(Ll0/k/b;)Lrx/Observable; - - move-result-object p1 - - invoke-virtual {p1}, Lrx/Observable;->q()Lrx/Observable; - - move-result-object p1 - - const-string p2, "getForUserId(userId)\n \u2026 .distinctUntilChanged()" - - invoke-static {p1, p2}, Lc0/n/c/j;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V - - return-object p1 -.end method - -.method public final getForUserId(J)Lrx/Observable; - .locals 2 - .annotation system Ldalvik/annotation/Signature; - value = { - "(J)", - "Lrx/Observable<", - "Lcom/discord/models/domain/ModelPresence;", - ">;" - } - .end annotation - - invoke-virtual {p0}, Lcom/discord/stores/StoreUserPresence;->get()Lrx/Observable; - - move-result-object v0 - - new-instance v1, Lcom/discord/stores/StoreUserPresence$getForUserId$1; - - invoke-direct {v1, p1, p2}, Lcom/discord/stores/StoreUserPresence$getForUserId$1;->(J)V - - invoke-virtual {v0, v1}, Lrx/Observable;->D(Ll0/k/b;)Lrx/Observable; - - move-result-object p1 - - invoke-virtual {p1}, Lrx/Observable;->q()Lrx/Observable; - - move-result-object p1 - - const-string p2, "get()\n .map { it[\u2026 .distinctUntilChanged()" - - invoke-static {p1, p2}, Lc0/n/c/j;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V - - return-object p1 -.end method - -.method public final getForUserIds(Ljava/util/Collection;)Lrx/Observable; - .locals 2 - .annotation system Ldalvik/annotation/Signature; - value = { - "(", - "Ljava/util/Collection<", - "Ljava/lang/Long;", - ">;)", - "Lrx/Observable<", - "Ljava/util/Map<", - "Ljava/lang/Long;", - "Lcom/discord/models/domain/ModelPresence;", - ">;>;" - } - .end annotation - - const-string/jumbo v0, "userIds" - - invoke-static {p1, v0}, Lc0/n/c/j;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V - - invoke-virtual {p0}, Lcom/discord/stores/StoreUserPresence;->get()Lrx/Observable; - - move-result-object v0 - - new-instance v1, Lcom/discord/stores/StoreUserPresence$getForUserIds$1; - - invoke-direct {v1, p1}, Lcom/discord/stores/StoreUserPresence$getForUserIds$1;->(Ljava/util/Collection;)V - - invoke-virtual {v0, v1}, Lrx/Observable;->D(Ll0/k/b;)Lrx/Observable; - - move-result-object p1 - - invoke-virtual {p1}, Lrx/Observable;->q()Lrx/Observable; - - move-result-object p1 - - const-string v0, "get()\n .map { it.\u2026 .distinctUntilChanged()" - - invoke-static {p1, v0}, Lc0/n/c/j;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V - - return-object p1 -.end method - -.method public final getLocalPresence()Lrx/Observable; - .locals 2 - .annotation system Ldalvik/annotation/Signature; - value = { - "()", - "Lrx/Observable<", - "Lcom/discord/models/domain/ModelPresence;", - ">;" - } - .end annotation - - iget-object v0, p0, Lcom/discord/stores/StoreUserPresence;->localPresenceSubject:Lrx/subjects/SerializedSubject; - - invoke-static {v0}, Lcom/discord/utilities/rx/ObservableExtensionsKt;->computationLatest(Lrx/Observable;)Lrx/Observable; - - move-result-object v0 - - invoke-virtual {v0}, Lrx/Observable;->q()Lrx/Observable; - - move-result-object v0 - - const-string v1, "localPresenceSubject\n \u2026 .distinctUntilChanged()" - - invoke-static {v0, v1}, Lc0/n/c/j;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V - - return-object v0 -.end method - .method public final getLocalPresence$app_productionDiscordExternalRelease()Lcom/discord/models/domain/ModelPresence; .locals 1 @@ -1299,6 +1172,14 @@ return-object v0 .end method +.method public final getObservationDeck()Lcom/discord/stores/updates/ObservationDeck; + .locals 1 + + iget-object v0, p0, Lcom/discord/stores/StoreUserPresence;->observationDeck:Lcom/discord/stores/updates/ObservationDeck; + + return-object v0 +.end method + .method public final getPresences()Lcom/discord/utilities/collections/SnowflakePartitionMap$CopiablePartitionMap; .locals 1 .annotation system Ldalvik/annotation/Signature; @@ -1424,9 +1305,7 @@ invoke-direct {p0, v0, p1, v1}, Lcom/discord/stores/StoreUserPresence;->updateSelfPresence(Lcom/discord/models/domain/ModelUserSettings;Ljava/util/List;Z)V - const/4 p1, 0x1 - - iput-boolean p1, p0, Lcom/discord/stores/StoreUserPresence;->isDirty:Z + invoke-virtual {p0}, Lcom/discord/stores/StoreV2;->markChanged()V return-void .end method @@ -1727,38 +1606,240 @@ return-void .end method -.method public onDispatchEnded()V +.method public final observeAllPresences()Lrx/Observable; + .locals 8 + .annotation system Ldalvik/annotation/Signature; + value = { + "()", + "Lrx/Observable<", + "Ljava/util/Map<", + "Ljava/lang/Long;", + "Lcom/discord/models/domain/ModelPresence;", + ">;>;" + } + .end annotation + + iget-object v0, p0, Lcom/discord/stores/StoreUserPresence;->observationDeck:Lcom/discord/stores/updates/ObservationDeck; + + const/4 v1, 0x1 + + new-array v1, v1, [Lcom/discord/stores/updates/ObservationDeck$UpdateSource; + + const/4 v2, 0x0 + + aput-object p0, v1, v2 + + new-instance v5, Lcom/discord/stores/StoreUserPresence$observeAllPresences$1; + + invoke-direct {v5, p0}, Lcom/discord/stores/StoreUserPresence$observeAllPresences$1;->(Lcom/discord/stores/StoreUserPresence;)V + + const/4 v3, 0x0 + + const/4 v4, 0x0 + + const/16 v6, 0xe + + const/4 v7, 0x0 + + invoke-static/range {v0 .. v7}, Lcom/discord/stores/updates/ObservationDeck;->connectRx$default(Lcom/discord/stores/updates/ObservationDeck;[Lcom/discord/stores/updates/ObservationDeck$UpdateSource;ZLrx/Emitter$BackpressureMode;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)Lrx/Observable; + + move-result-object v0 + + return-object v0 +.end method + +.method public final observeApplicationActivity(JJ)Lrx/Observable; + .locals 0 + .annotation system Ldalvik/annotation/Signature; + value = { + "(JJ)", + "Lrx/Observable<", + "Lcom/discord/models/domain/activity/ModelActivity;", + ">;" + } + .end annotation + + invoke-virtual {p0, p1, p2}, Lcom/discord/stores/StoreUserPresence;->observePresenceForUser(J)Lrx/Observable; + + move-result-object p1 + + new-instance p2, Lcom/discord/stores/StoreUserPresence$observeApplicationActivity$1; + + invoke-direct {p2, p3, p4}, Lcom/discord/stores/StoreUserPresence$observeApplicationActivity$1;->(J)V + + invoke-virtual {p1, p2}, Lrx/Observable;->D(Ll0/k/b;)Lrx/Observable; + + move-result-object p1 + + invoke-virtual {p1}, Lrx/Observable;->q()Lrx/Observable; + + move-result-object p1 + + const-string p2, "observePresenceForUser(u\u2026 .distinctUntilChanged()" + + invoke-static {p1, p2}, Lc0/n/c/j;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V + + return-object p1 +.end method + +.method public final observeLocalPresence()Lrx/Observable; + .locals 8 + .annotation system Ldalvik/annotation/Signature; + value = { + "()", + "Lrx/Observable<", + "Lcom/discord/models/domain/ModelPresence;", + ">;" + } + .end annotation + + iget-object v0, p0, Lcom/discord/stores/StoreUserPresence;->observationDeck:Lcom/discord/stores/updates/ObservationDeck; + + const/4 v1, 0x1 + + new-array v1, v1, [Lcom/discord/stores/updates/ObservationDeck$UpdateSource; + + sget-object v2, Lcom/discord/stores/StoreUserPresence;->LocalPresenceUpdateSource:Lcom/discord/stores/StoreUserPresence$Companion$LocalPresenceUpdateSource$1; + + const/4 v3, 0x0 + + aput-object v2, v1, v3 + + new-instance v5, Lcom/discord/stores/StoreUserPresence$observeLocalPresence$1; + + invoke-direct {v5, p0}, Lcom/discord/stores/StoreUserPresence$observeLocalPresence$1;->(Lcom/discord/stores/StoreUserPresence;)V + + const/4 v2, 0x0 + + const/4 v3, 0x0 + + const/4 v4, 0x0 + + const/16 v6, 0xe + + const/4 v7, 0x0 + + invoke-static/range {v0 .. v7}, Lcom/discord/stores/updates/ObservationDeck;->connectRx$default(Lcom/discord/stores/updates/ObservationDeck;[Lcom/discord/stores/updates/ObservationDeck$UpdateSource;ZLrx/Emitter$BackpressureMode;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)Lrx/Observable; + + move-result-object v0 + + invoke-static {v0}, Lcom/discord/utilities/rx/ObservableExtensionsKt;->computationLatest(Lrx/Observable;)Lrx/Observable; + + move-result-object v0 + + invoke-virtual {v0}, Lrx/Observable;->q()Lrx/Observable; + + move-result-object v0 + + const-string v1, "observationDeck\n .c\u2026 .distinctUntilChanged()" + + invoke-static {v0, v1}, Lc0/n/c/j;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V + + return-object v0 +.end method + +.method public final observePresenceForUser(J)Lrx/Observable; + .locals 2 + .annotation system Ldalvik/annotation/Signature; + value = { + "(J)", + "Lrx/Observable<", + "Lcom/discord/models/domain/ModelPresence;", + ">;" + } + .end annotation + + invoke-virtual {p0}, Lcom/discord/stores/StoreUserPresence;->observeAllPresences()Lrx/Observable; + + move-result-object v0 + + new-instance v1, Lcom/discord/stores/StoreUserPresence$observePresenceForUser$1; + + invoke-direct {v1, p1, p2}, Lcom/discord/stores/StoreUserPresence$observePresenceForUser$1;->(J)V + + invoke-virtual {v0, v1}, Lrx/Observable;->D(Ll0/k/b;)Lrx/Observable; + + move-result-object p1 + + invoke-virtual {p1}, Lrx/Observable;->q()Lrx/Observable; + + move-result-object p1 + + const-string p2, "observeAllPresences()\n \u2026 .distinctUntilChanged()" + + invoke-static {p1, p2}, Lc0/n/c/j;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V + + return-object p1 +.end method + +.method public final observePresencesForUsers(Ljava/util/Collection;)Lrx/Observable; + .locals 2 + .annotation system Ldalvik/annotation/Signature; + value = { + "(", + "Ljava/util/Collection<", + "Ljava/lang/Long;", + ">;)", + "Lrx/Observable<", + "Ljava/util/Map<", + "Ljava/lang/Long;", + "Lcom/discord/models/domain/ModelPresence;", + ">;>;" + } + .end annotation + + const-string/jumbo v0, "userIds" + + invoke-static {p1, v0}, Lc0/n/c/j;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V + + invoke-virtual {p0}, Lcom/discord/stores/StoreUserPresence;->observeAllPresences()Lrx/Observable; + + move-result-object v0 + + new-instance v1, Lcom/discord/stores/StoreUserPresence$observePresencesForUsers$1; + + invoke-direct {v1, p1}, Lcom/discord/stores/StoreUserPresence$observePresencesForUsers$1;->(Ljava/util/Collection;)V + + invoke-virtual {v0, v1}, Lrx/Observable;->D(Ll0/k/b;)Lrx/Observable; + + move-result-object p1 + + invoke-virtual {p1}, Lrx/Observable;->q()Lrx/Observable; + + move-result-object p1 + + const-string v0, "observeAllPresences()\n \u2026 .distinctUntilChanged()" + + invoke-static {p1, v0}, Lc0/n/c/j;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V + + return-object p1 +.end method + +.method public snapshotData()V .locals 8 .annotation runtime Lcom/discord/stores/StoreThread; .end annotation - iget-boolean v0, p0, Lcom/discord/stores/StoreUserPresence;->isDirty:Z + iget-object v0, p0, Lcom/discord/stores/StoreUserPresence;->presences:Lcom/discord/utilities/collections/SnowflakePartitionMap$CopiablePartitionMap; - const/4 v1, 0x0 + invoke-virtual {v0}, Lcom/discord/utilities/collections/SnowflakePartitionMap$CopiablePartitionMap;->fastCopy()Ljava/util/Map; + + move-result-object v0 + + iput-object v0, p0, Lcom/discord/stores/StoreUserPresence;->presencesSnapshot:Ljava/util/Map; + + invoke-virtual {p0}, Lcom/discord/stores/StoreV2;->getUpdateSources()Ljava/util/Set; + + move-result-object v0 + + sget-object v1, Lcom/discord/stores/StoreUserPresence;->LocalPresenceUpdateSource:Lcom/discord/stores/StoreUserPresence$Companion$LocalPresenceUpdateSource$1; + + invoke-interface {v0, v1}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z + + move-result v0 if-eqz v0, :cond_0 - iget-object v0, p0, Lcom/discord/stores/StoreUserPresence;->presencesPublisher:Lrx/subjects/SerializedSubject; - - iget-object v2, p0, Lcom/discord/stores/StoreUserPresence;->presences:Lcom/discord/utilities/collections/SnowflakePartitionMap$CopiablePartitionMap; - - invoke-virtual {v2}, Lcom/discord/utilities/collections/SnowflakePartitionMap$CopiablePartitionMap;->fastCopy()Ljava/util/Map; - - move-result-object v2 - - iget-object v0, v0, Lrx/subjects/SerializedSubject;->e:Ll0/n/c; - - invoke-virtual {v0, v2}, Ll0/n/c;->onNext(Ljava/lang/Object;)V - - iput-boolean v1, p0, Lcom/discord/stores/StoreUserPresence;->isDirty:Z - - :cond_0 - iget-boolean v0, p0, Lcom/discord/stores/StoreUserPresence;->isLocalPresenceDirty:Z - - if-eqz v0, :cond_1 - - iput-boolean v1, p0, Lcom/discord/stores/StoreUserPresence;->isLocalPresenceDirty:Z - sget-object v0, Lcom/discord/stores/StoreStream;->Companion:Lcom/discord/stores/StoreStream$Companion; invoke-virtual {v0}, Lcom/discord/stores/StoreStream$Companion;->getGatewaySocket()Lcom/discord/stores/StoreGatewayConnection; @@ -1787,16 +1868,18 @@ invoke-static/range {v1 .. v7}, Lcom/discord/stores/StoreGatewayConnection;->presenceUpdate$default(Lcom/discord/stores/StoreGatewayConnection;Lcom/discord/models/domain/ModelPresence$Status;Ljava/lang/Long;Ljava/util/List;Ljava/lang/Boolean;ILjava/lang/Object;)Z - :cond_1 + :cond_0 return-void .end method .method public final updateActivity(ILcom/discord/models/domain/activity/ModelActivity;Z)V - .locals 11 + .locals 12 .annotation runtime Lcom/discord/stores/StoreThread; .end annotation - const/4 v0, 0x1 + const/4 v0, 0x0 + + const/4 v1, 0x1 if-nez p3, :cond_4 @@ -1808,9 +1891,9 @@ if-eqz p3, :cond_2 - new-instance v1, Ljava/util/ArrayList; + new-instance v2, Ljava/util/ArrayList; - invoke-direct {v1}, Ljava/util/ArrayList;->()V + invoke-direct {v2}, Ljava/util/ArrayList;->()V invoke-interface {p3}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator; @@ -1820,53 +1903,53 @@ :goto_0 invoke-interface {p3}, Ljava/util/Iterator;->hasNext()Z - move-result v2 + move-result v3 - if-eqz v2, :cond_3 + if-eqz v3, :cond_3 invoke-interface {p3}, Ljava/util/Iterator;->next()Ljava/lang/Object; - move-result-object v2 + move-result-object v3 - move-object v3, v2 + move-object v4, v3 - check-cast v3, Lcom/discord/models/domain/activity/ModelActivity; + check-cast v4, Lcom/discord/models/domain/activity/ModelActivity; - invoke-virtual {v3}, Lcom/discord/models/domain/activity/ModelActivity;->getType()I + invoke-virtual {v4}, Lcom/discord/models/domain/activity/ModelActivity;->getType()I - move-result v3 + move-result v4 if-eqz p2, :cond_1 invoke-virtual {p2}, Lcom/discord/models/domain/activity/ModelActivity;->getType()I - move-result v4 + move-result v5 - if-ne v3, v4, :cond_1 + if-ne v4, v5, :cond_1 - const/4 v3, 0x1 + const/4 v4, 0x1 goto :goto_1 :cond_1 - const/4 v3, 0x0 + const/4 v4, 0x0 :goto_1 - if-eqz v3, :cond_0 + if-eqz v4, :cond_0 - invoke-interface {v1, v2}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z + invoke-interface {v2, v3}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z goto :goto_0 :cond_2 - const/4 v1, 0x0 + const/4 v2, 0x0 :cond_3 - invoke-static {p2, v1}, Lc0/n/c/j;->areEqual(Ljava/lang/Object;Ljava/lang/Object;)Z + invoke-static {p2, v2}, Lc0/n/c/j;->areEqual(Ljava/lang/Object;Ljava/lang/Object;)Z move-result p3 - xor-int/2addr p3, v0 + xor-int/2addr p3, v1 if-eqz p3, :cond_6 @@ -1897,7 +1980,7 @@ move-result-object p1 :goto_2 - move-object v3, p1 + move-object v4, p1 new-instance p1, Lcom/discord/models/domain/ModelPresence; @@ -1905,33 +1988,33 @@ invoke-virtual {p2}, Lcom/discord/models/domain/ModelPresence;->getStatus()Lcom/discord/models/domain/ModelPresence$Status; - move-result-object v2 - - const/4 v4, 0x0 + move-result-object v3 const/4 v5, 0x0 const/4 v6, 0x0 - const-wide/16 v7, 0x0 + const/4 v7, 0x0 - const/16 v9, 0x3c + const-wide/16 v8, 0x0 - const/4 v10, 0x0 + const/16 v10, 0x3c - move-object v1, p1 + const/4 v11, 0x0 - invoke-direct/range {v1 .. v10}, Lcom/discord/models/domain/ModelPresence;->(Lcom/discord/models/domain/ModelPresence$Status;Ljava/util/List;Lcom/discord/models/domain/ModelPresence$ClientStatuses;Lcom/discord/models/domain/ModelUser;Ljava/lang/Long;JILkotlin/jvm/internal/DefaultConstructorMarker;)V + move-object v2, p1 + + invoke-direct/range {v2 .. v11}, Lcom/discord/models/domain/ModelPresence;->(Lcom/discord/models/domain/ModelPresence$Status;Ljava/util/List;Lcom/discord/models/domain/ModelPresence$ClientStatuses;Lcom/discord/models/domain/ModelUser;Ljava/lang/Long;JILkotlin/jvm/internal/DefaultConstructorMarker;)V iput-object p1, p0, Lcom/discord/stores/StoreUserPresence;->localPresence:Lcom/discord/models/domain/ModelPresence; - iget-object p2, p0, Lcom/discord/stores/StoreUserPresence;->localPresenceSubject:Lrx/subjects/SerializedSubject; + new-array p1, v1, [Lcom/discord/stores/updates/ObservationDeck$UpdateSource; - iget-object p2, p2, Lrx/subjects/SerializedSubject;->e:Ll0/n/c; + sget-object p2, Lcom/discord/stores/StoreUserPresence;->LocalPresenceUpdateSource:Lcom/discord/stores/StoreUserPresence$Companion$LocalPresenceUpdateSource$1; - invoke-virtual {p2, p1}, Ll0/n/c;->onNext(Ljava/lang/Object;)V + aput-object p2, p1, v0 - iput-boolean v0, p0, Lcom/discord/stores/StoreUserPresence;->isLocalPresenceDirty:Z + invoke-virtual {p0, p1}, Lcom/discord/stores/StoreV2;->markChanged([Lcom/discord/stores/updates/ObservationDeck$UpdateSource;)V iget-object p1, p0, Lcom/discord/stores/StoreUserPresence;->meUser:Lcom/discord/models/domain/ModelUser; @@ -1945,21 +2028,21 @@ invoke-static {p1, p2}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; - move-result-object v1 + move-result-object v0 - invoke-virtual {p3, v1}, Lcom/discord/utilities/collections/SnowflakePartitionMap$CopiablePartitionMap;->get(Ljava/lang/Object;)Ljava/lang/Object; + invoke-virtual {p3, v0}, Lcom/discord/utilities/collections/SnowflakePartitionMap$CopiablePartitionMap;->get(Ljava/lang/Object;)Ljava/lang/Object; move-result-object p3 check-cast p3, Lcom/discord/models/domain/ModelPresence; - iget-object v1, p0, Lcom/discord/stores/StoreUserPresence;->localPresence:Lcom/discord/models/domain/ModelPresence; + iget-object v0, p0, Lcom/discord/stores/StoreUserPresence;->localPresence:Lcom/discord/models/domain/ModelPresence; - invoke-static {p3, v1}, Lc0/n/c/j;->areEqual(Ljava/lang/Object;Ljava/lang/Object;)Z + invoke-static {p3, v0}, Lc0/n/c/j;->areEqual(Ljava/lang/Object;Ljava/lang/Object;)Z move-result p3 - xor-int/2addr p3, v0 + xor-int/2addr p3, v1 if-eqz p3, :cond_6 @@ -1973,7 +2056,7 @@ invoke-interface {p3, p1, p2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; - iput-boolean v0, p0, Lcom/discord/stores/StoreUserPresence;->isDirty:Z + invoke-virtual {p0}, Lcom/discord/stores/StoreV2;->markChanged()V :cond_6 return-void diff --git a/com.discord/smali/com/discord/stores/StoreV2.smali b/com.discord/smali/com/discord/stores/StoreV2.smali index 3a6572ff67..e7de7a4936 100644 --- a/com.discord/smali/com/discord/stores/StoreV2.smali +++ b/com.discord/smali/com/discord/stores/StoreV2.smali @@ -86,6 +86,20 @@ return-void .end method +.method public final markUnchanged(Lcom/discord/stores/updates/ObservationDeck$UpdateSource;)V + .locals 1 + + const-string/jumbo v0, "updateSource" + + invoke-static {p1, v0}, Lc0/n/c/j;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V + + iget-object v0, p0, Lcom/discord/stores/StoreV2;->updateSources:Ljava/util/Set; + + invoke-interface {v0, p1}, Ljava/util/Set;->remove(Ljava/lang/Object;)Z + + return-void +.end method + .method public onDispatchEnded()V .locals 1 diff --git a/com.discord/smali/com/discord/stores/StoreVoiceParticipants$get$1$2$2.smali b/com.discord/smali/com/discord/stores/StoreVoiceParticipants$get$1$2$2.smali index 4fbfee85a2..41dd2d89d3 100644 --- a/com.discord/smali/com/discord/stores/StoreVoiceParticipants$get$1$2$2.smali +++ b/com.discord/smali/com/discord/stores/StoreVoiceParticipants$get$1$2$2.smali @@ -228,7 +228,7 @@ invoke-static {v11, v1}, Lc0/n/c/j;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V - const-string v1, "streamContexts" + const-string/jumbo v1, "streamContexts" move-object/from16 v12, p8 diff --git a/com.discord/smali/com/discord/utilities/analytics/AnalyticSuperProperties.smali b/com.discord/smali/com/discord/utilities/analytics/AnalyticSuperProperties.smali index 671be11dd9..b46574bbb8 100644 --- a/com.discord/smali/com/discord/utilities/analytics/AnalyticSuperProperties.smali +++ b/com.discord/smali/com/discord/utilities/analytics/AnalyticSuperProperties.smali @@ -173,7 +173,7 @@ const-string v3, "browser_user_agent" - const-string v4, "Discord-Android/1296" + const-string v4, "Discord-Android/1297" invoke-direct {v2, v3, v4}, Lkotlin/Pair;->(Ljava/lang/Object;Ljava/lang/Object;)V @@ -181,7 +181,7 @@ const/4 v1, 0x2 - const/16 v2, 0x510 + const/16 v2, 0x511 invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; @@ -201,7 +201,7 @@ const-string v3, "client_version" - const-string v4, "45.0" + const-string v4, "45.1" invoke-direct {v2, v3, v4}, Lkotlin/Pair;->(Ljava/lang/Object;Ljava/lang/Object;)V diff --git a/com.discord/smali/com/discord/utilities/analytics/AnalyticsTracker.smali b/com.discord/smali/com/discord/utilities/analytics/AnalyticsTracker.smali index 6e44c70d75..4f9c6c4c84 100644 --- a/com.discord/smali/com/discord/utilities/analytics/AnalyticsTracker.smali +++ b/com.discord/smali/com/discord/utilities/analytics/AnalyticsTracker.smali @@ -930,7 +930,7 @@ move-result-object v0 - invoke-virtual {v0}, Lcom/discord/stores/StoreUserPresence;->getLocalPresence()Lrx/Observable; + invoke-virtual {v0}, Lcom/discord/stores/StoreUserPresence;->observeLocalPresence()Lrx/Observable; move-result-object v0 @@ -940,7 +940,7 @@ move-result-object v1 - invoke-virtual {v1, p1, p2}, Lcom/discord/stores/StoreUserPresence;->getForUserId(J)Lrx/Observable; + invoke-virtual {v1, p1, p2}, Lcom/discord/stores/StoreUserPresence;->observePresenceForUser(J)Lrx/Observable; move-result-object p1 diff --git a/com.discord/smali/com/discord/utilities/rest/RestAPI$AppHeadersProvider.smali b/com.discord/smali/com/discord/utilities/rest/RestAPI$AppHeadersProvider.smali index 353a7eff4f..97408ac738 100644 --- a/com.discord/smali/com/discord/utilities/rest/RestAPI$AppHeadersProvider.smali +++ b/com.discord/smali/com/discord/utilities/rest/RestAPI$AppHeadersProvider.smali @@ -159,7 +159,7 @@ .method public getUserAgent()Ljava/lang/String; .locals 1 - const-string v0, "Discord-Android/1296" + const-string v0, "Discord-Android/1297" return-object v0 .end method diff --git a/com.discord/smali/com/discord/views/user/UserAvatarPresenceViewController.smali b/com.discord/smali/com/discord/views/user/UserAvatarPresenceViewController.smali index a2c8328650..e5649b30c5 100644 --- a/com.discord/smali/com/discord/views/user/UserAvatarPresenceViewController.smali +++ b/com.discord/smali/com/discord/views/user/UserAvatarPresenceViewController.smali @@ -103,7 +103,7 @@ invoke-static {p4, p5}, Lc0/n/c/j;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V - const-string p5, "streamContextService" + const-string/jumbo p5, "streamContextService" invoke-static {p3, p5}, Lc0/n/c/j;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V diff --git a/com.discord/smali/com/discord/widgets/channels/WidgetGroupInviteFriends$Model$Companion$getFilteredFriends$3.smali b/com.discord/smali/com/discord/widgets/channels/WidgetGroupInviteFriends$Model$Companion$getFilteredFriends$3.smali index 8139f30685..0d3470280d 100644 --- a/com.discord/smali/com/discord/widgets/channels/WidgetGroupInviteFriends$Model$Companion$getFilteredFriends$3.smali +++ b/com.discord/smali/com/discord/widgets/channels/WidgetGroupInviteFriends$Model$Companion$getFilteredFriends$3.smali @@ -102,7 +102,7 @@ move-result-object v1 - invoke-virtual {v0, v1}, Lcom/discord/stores/StoreUserPresence;->getForUserIds(Ljava/util/Collection;)Lrx/Observable; + invoke-virtual {v0, v1}, Lcom/discord/stores/StoreUserPresence;->observePresencesForUsers(Ljava/util/Collection;)Lrx/Observable; move-result-object v0 diff --git a/com.discord/smali/com/discord/widgets/channels/list/WidgetChannelListModel$Companion.smali b/com.discord/smali/com/discord/widgets/channels/list/WidgetChannelListModel$Companion.smali index ce74103f7d..302a9fda31 100644 --- a/com.discord/smali/com/discord/widgets/channels/list/WidgetChannelListModel$Companion.smali +++ b/com.discord/smali/com/discord/widgets/channels/list/WidgetChannelListModel$Companion.smali @@ -104,7 +104,7 @@ move-result-object v0 - invoke-virtual {v0}, Lcom/discord/stores/StoreUserPresence;->get()Lrx/Observable; + invoke-virtual {v0}, Lcom/discord/stores/StoreUserPresence;->observeAllPresences()Lrx/Observable; move-result-object v3 diff --git a/com.discord/smali/com/discord/widgets/channels/memberlist/PrivateChannelMemberListService$observeStateForGroupDm$2.smali b/com.discord/smali/com/discord/widgets/channels/memberlist/PrivateChannelMemberListService$observeStateForGroupDm$2.smali index 15f0a25b49..2b0e220073 100644 --- a/com.discord/smali/com/discord/widgets/channels/memberlist/PrivateChannelMemberListService$observeStateForGroupDm$2.smali +++ b/com.discord/smali/com/discord/widgets/channels/memberlist/PrivateChannelMemberListService$observeStateForGroupDm$2.smali @@ -104,7 +104,7 @@ move-result-object v1 - invoke-virtual {v1, p1}, Lcom/discord/stores/StoreUserPresence;->getForUserIds(Ljava/util/Collection;)Lrx/Observable; + invoke-virtual {v1, p1}, Lcom/discord/stores/StoreUserPresence;->observePresencesForUsers(Ljava/util/Collection;)Lrx/Observable; move-result-object p1 diff --git a/com.discord/smali/com/discord/widgets/chat/input/WidgetChatInputCommandsModel.smali b/com.discord/smali/com/discord/widgets/chat/input/WidgetChatInputCommandsModel.smali index aac60ddb81..2e5d4b3bf4 100644 --- a/com.discord/smali/com/discord/widgets/chat/input/WidgetChatInputCommandsModel.smali +++ b/com.discord/smali/com/discord/widgets/chat/input/WidgetChatInputCommandsModel.smali @@ -1068,7 +1068,7 @@ move-result-object v0 - invoke-virtual {v0}, Lcom/discord/stores/StoreUserPresence;->get()Lrx/Observable; + invoke-virtual {v0}, Lcom/discord/stores/StoreUserPresence;->observeAllPresences()Lrx/Observable; move-result-object v0 @@ -1482,7 +1482,7 @@ move-result-object v1 - invoke-virtual {v1, p1}, Lcom/discord/stores/StoreUserPresence;->getForUserIds(Ljava/util/Collection;)Lrx/Observable; + invoke-virtual {v1, p1}, Lcom/discord/stores/StoreUserPresence;->observePresencesForUsers(Ljava/util/Collection;)Lrx/Observable; move-result-object p1 diff --git a/com.discord/smali/com/discord/widgets/chat/list/ViewEmbedGameInvite$Model$Companion$getForShare$activityObs$1.smali b/com.discord/smali/com/discord/widgets/chat/list/ViewEmbedGameInvite$Model$Companion$getForShare$activityObs$1.smali index 68222f4f67..e4ea7a2273 100644 --- a/com.discord/smali/com/discord/widgets/chat/list/ViewEmbedGameInvite$Model$Companion$getForShare$activityObs$1.smali +++ b/com.discord/smali/com/discord/widgets/chat/list/ViewEmbedGameInvite$Model$Companion$getForShare$activityObs$1.smali @@ -101,7 +101,7 @@ move-result-wide v3 - invoke-virtual {v0, v1, v2, v3, v4}, Lcom/discord/stores/StoreUserPresence;->getApplicationActivity(JJ)Lrx/Observable; + invoke-virtual {v0, v1, v2, v3, v4}, Lcom/discord/stores/StoreUserPresence;->observeApplicationActivity(JJ)Lrx/Observable; move-result-object p1 diff --git a/com.discord/smali/com/discord/widgets/chat/list/ViewEmbedGameInvite$Model$Companion.smali b/com.discord/smali/com/discord/widgets/chat/list/ViewEmbedGameInvite$Model$Companion.smali index ba2b09ebad..d18a6b4e32 100644 --- a/com.discord/smali/com/discord/widgets/chat/list/ViewEmbedGameInvite$Model$Companion.smali +++ b/com.discord/smali/com/discord/widgets/chat/list/ViewEmbedGameInvite$Model$Companion.smali @@ -532,7 +532,7 @@ move-result-wide v6 - invoke-virtual {v0, v4, v5, v6, v7}, Lcom/discord/stores/StoreUserPresence;->getApplicationActivity(JJ)Lrx/Observable; + invoke-virtual {v0, v4, v5, v6, v7}, Lcom/discord/stores/StoreUserPresence;->observeApplicationActivity(JJ)Lrx/Observable; move-result-object v4 diff --git a/com.discord/smali/com/discord/widgets/chat/list/WidgetChatListAdapterItemListenTogether$Model$Companion.smali b/com.discord/smali/com/discord/widgets/chat/list/WidgetChatListAdapterItemListenTogether$Model$Companion.smali index 0e175c7a98..76a925c5df 100644 --- a/com.discord/smali/com/discord/widgets/chat/list/WidgetChatListAdapterItemListenTogether$Model$Companion.smali +++ b/com.discord/smali/com/discord/widgets/chat/list/WidgetChatListAdapterItemListenTogether$Model$Companion.smali @@ -236,7 +236,7 @@ move-result-wide v1 - invoke-virtual {v0, v1, v2}, Lcom/discord/stores/StoreUserPresence;->getForUserId(J)Lrx/Observable; + invoke-virtual {v0, v1, v2}, Lcom/discord/stores/StoreUserPresence;->observePresenceForUser(J)Lrx/Observable; move-result-object v0 diff --git a/com.discord/smali/com/discord/widgets/debugging/WidgetFatalCrash.smali b/com.discord/smali/com/discord/widgets/debugging/WidgetFatalCrash.smali index 795d47355b..98658cdb97 100644 --- a/com.discord/smali/com/discord/widgets/debugging/WidgetFatalCrash.smali +++ b/com.discord/smali/com/discord/widgets/debugging/WidgetFatalCrash.smali @@ -446,7 +446,7 @@ new-array v2, v0, [Ljava/lang/Object; - const-string v4, "45.0" + const-string v4, "45.1" aput-object v4, v2, v3 diff --git a/com.discord/smali/com/discord/widgets/friends/FriendsListViewModel$Factory.smali b/com.discord/smali/com/discord/widgets/friends/FriendsListViewModel$Factory.smali index b9d4d35b34..7adeb2ef6b 100644 --- a/com.discord/smali/com/discord/widgets/friends/FriendsListViewModel$Factory.smali +++ b/com.discord/smali/com/discord/widgets/friends/FriendsListViewModel$Factory.smali @@ -104,7 +104,7 @@ move-result-object v0 - invoke-virtual {v0}, Lcom/discord/stores/StoreUserPresence;->get()Lrx/Observable; + invoke-virtual {v0}, Lcom/discord/stores/StoreUserPresence;->observeAllPresences()Lrx/Observable; move-result-object v2 diff --git a/com.discord/smali/com/discord/widgets/friends/WidgetFriendsFindNearby$ModelProvider.smali b/com.discord/smali/com/discord/widgets/friends/WidgetFriendsFindNearby$ModelProvider.smali index 97d10c9fa5..b88db8276e 100644 --- a/com.discord/smali/com/discord/widgets/friends/WidgetFriendsFindNearby$ModelProvider.smali +++ b/com.discord/smali/com/discord/widgets/friends/WidgetFriendsFindNearby$ModelProvider.smali @@ -81,7 +81,7 @@ move-result-object v1 - invoke-virtual {v1, p1}, Lcom/discord/stores/StoreUserPresence;->getForUserIds(Ljava/util/Collection;)Lrx/Observable; + invoke-virtual {v1, p1}, Lcom/discord/stores/StoreUserPresence;->observePresencesForUsers(Ljava/util/Collection;)Lrx/Observable; move-result-object v1 diff --git a/com.discord/smali/com/discord/widgets/home/WidgetHomeModel$Companion.smali b/com.discord/smali/com/discord/widgets/home/WidgetHomeModel$Companion.smali index 851a0e8596..c572f9243f 100644 --- a/com.discord/smali/com/discord/widgets/home/WidgetHomeModel$Companion.smali +++ b/com.discord/smali/com/discord/widgets/home/WidgetHomeModel$Companion.smali @@ -70,7 +70,7 @@ move-result-object v0 - invoke-virtual {v0}, Lcom/discord/stores/StoreUserPresence;->get()Lrx/Observable; + invoke-virtual {v0}, Lcom/discord/stores/StoreUserPresence;->observeAllPresences()Lrx/Observable; move-result-object v3 diff --git a/com.discord/smali_classes2/com/discord/widgets/settings/WidgetSettings$Model$Companion.smali b/com.discord/smali_classes2/com/discord/widgets/settings/WidgetSettings$Model$Companion.smali index ad8c05b29a..4311d0224a 100644 --- a/com.discord/smali_classes2/com/discord/widgets/settings/WidgetSettings$Model$Companion.smali +++ b/com.discord/smali_classes2/com/discord/widgets/settings/WidgetSettings$Model$Companion.smali @@ -72,7 +72,7 @@ move-result-object v2 - invoke-virtual {v2}, Lcom/discord/stores/StoreUserPresence;->getLocalPresence()Lrx/Observable; + invoke-virtual {v2}, Lcom/discord/stores/StoreUserPresence;->observeLocalPresence()Lrx/Observable; move-result-object v2 diff --git a/com.discord/smali_classes2/com/discord/widgets/settings/WidgetSettings.smali b/com.discord/smali_classes2/com/discord/widgets/settings/WidgetSettings.smali index 49c1bbc3d7..9b3c75933e 100644 --- a/com.discord/smali_classes2/com/discord/widgets/settings/WidgetSettings.smali +++ b/com.discord/smali_classes2/com/discord/widgets/settings/WidgetSettings.smali @@ -1950,7 +1950,7 @@ invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; - const-string v0, " - 45.0 (1296)" + const-string v0, " - 45.1 (1297)" invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; diff --git a/com.discord/smali_classes2/com/discord/widgets/user/WidgetUserMutualFriends$Model.smali b/com.discord/smali_classes2/com/discord/widgets/user/WidgetUserMutualFriends$Model.smali index 62ad973aeb..ad2b202d89 100644 --- a/com.discord/smali_classes2/com/discord/widgets/user/WidgetUserMutualFriends$Model.smali +++ b/com.discord/smali_classes2/com/discord/widgets/user/WidgetUserMutualFriends$Model.smali @@ -305,7 +305,7 @@ move-result-object v0 - invoke-virtual {v0, p2}, Lcom/discord/stores/StoreUserPresence;->getForUserIds(Ljava/util/Collection;)Lrx/Observable; + invoke-virtual {v0, p2}, Lcom/discord/stores/StoreUserPresence;->observePresencesForUsers(Ljava/util/Collection;)Lrx/Observable; move-result-object v3 diff --git a/com.discord/smali_classes2/com/discord/widgets/user/WidgetUserStatusSheetViewModel$Factory.smali b/com.discord/smali_classes2/com/discord/widgets/user/WidgetUserStatusSheetViewModel$Factory.smali index 9cbccdf324..a7eadf92b3 100644 --- a/com.discord/smali_classes2/com/discord/widgets/user/WidgetUserStatusSheetViewModel$Factory.smali +++ b/com.discord/smali_classes2/com/discord/widgets/user/WidgetUserStatusSheetViewModel$Factory.smali @@ -39,7 +39,7 @@ } .end annotation - invoke-virtual {p1}, Lcom/discord/stores/StoreUserPresence;->getLocalPresence()Lrx/Observable; + invoke-virtual {p1}, Lcom/discord/stores/StoreUserPresence;->observeLocalPresence()Lrx/Observable; move-result-object p1 diff --git a/com.discord/smali_classes2/com/discord/widgets/user/presence/ModelRichPresence$Companion.smali b/com.discord/smali_classes2/com/discord/widgets/user/presence/ModelRichPresence$Companion.smali index 6dc476d9bb..8eb2a8ea3b 100644 --- a/com.discord/smali_classes2/com/discord/widgets/user/presence/ModelRichPresence$Companion.smali +++ b/com.discord/smali_classes2/com/discord/widgets/user/presence/ModelRichPresence$Companion.smali @@ -71,7 +71,7 @@ invoke-static {p3, v0}, Lc0/n/c/j;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V - invoke-virtual {p3, p1, p2}, Lcom/discord/stores/StoreUserPresence;->getForUserId(J)Lrx/Observable; + invoke-virtual {p3, p1, p2}, Lcom/discord/stores/StoreUserPresence;->observePresenceForUser(J)Lrx/Observable; move-result-object p1 diff --git a/com.discord/smali_classes2/com/discord/widgets/user/search/WidgetGlobalSearchModel$Companion.smali b/com.discord/smali_classes2/com/discord/widgets/user/search/WidgetGlobalSearchModel$Companion.smali index d82602064c..122681a2da 100644 --- a/com.discord/smali_classes2/com/discord/widgets/user/search/WidgetGlobalSearchModel$Companion.smali +++ b/com.discord/smali_classes2/com/discord/widgets/user/search/WidgetGlobalSearchModel$Companion.smali @@ -242,7 +242,7 @@ move-result-object v2 - invoke-virtual {v2}, Lcom/discord/stores/StoreUserPresence;->get()Lrx/Observable; + invoke-virtual {v2}, Lcom/discord/stores/StoreUserPresence;->observeAllPresences()Lrx/Observable; move-result-object v4